动态规划题

这几天做了部分动态规划的题目,写一下当前的感想,从力扣上练题
dp dynamic_programming 本质上是递归的一种优化,是尝试将递归的高指数的时间复杂度通过记录降低其复杂度。
适用于解决重叠子问题 最优子结构
从网上看各路神仙的方法和方式

  • 判断是否为动态规划问题【注意区别于贪心算法】
  • 确定状态转移方程【很多时候就是递归方程】
  • 确定dp的边界【这个需要考虑很仔细】

例典型的爬楼梯
动态规划题
上述方法在这道题很好的体现:力扣198题打家劫舍与这道题目思路类似
第二例
寻找路径最小和动态规划题
这也是经常出现的题目,在这里建立一个二维数组dp,dp【i】【j】表示到此点的最小路劲和,最后得出dp的右下角即为结果
其余几道题的思路与上两题相似
931 下降路劲最小和
动态规划题
我尝试一开始的c++感觉太麻烦了,官方解法的python解法,代码极为简洁
先从底部往上遍历,用python特有的pop方法弹出最后一行,在边界处理上
用一行代码解决,看的时候楞了半天,最后看完觉得是真的厉害