重叠子问题计算之后保存起来,用数组记录中间过程的递归(https://b23.tv/QUr9XE 这个b站视频讲的很好)
-
自顶向下分阶段(选或者不选)
-
写出状态转移方程
-
找到问出口
例子:跳n级楼梯,一次可跳1级或者2级,求有多少种跳法
- 首先从第n级往下跳:可选跳1级或者跳2级两种情况{dp[n-1] dp[n-2]}
- 那么跳法就是dp[n] = dp[n-1]+dp[n-2](n > 2)
- 出口就是dp[0] = 0,dp[1] = 1,dp[2] = 2(此处还要注意状态转移方程的n的范围)