动态规划问题
动态规划问题
解题思路
- 先分析dp各下标及其对应值代表的含义
- 写出状态转移方程
- 初始化dp数组
- 确认遍历顺序
- 打印dp数组来debug
示例
跳台阶
问题
给定一个共有 𝑛 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶?
解题思路
分析题目,求解到达最后一个台阶的方案,简化为到达第i哥台阶的方案数;设置dp数组,设置为一维数组dpn + 1,dp[i]代表到达第i个台阶的方案数
第i个台阶只能由第i - 1或i - 2各台阶跳上去,因此dp[i] = dp[i - 1] + dp[i - 2];
初始化dp数组,第一个台阶只有一种方案,第二个台阶有两个,因此dp[1] = 1;dp[2] = 2;
确认遍历顺序,dp前两个已经确定,直接从dp[3] 开始往后循环遍历(从前往后跳,后面台阶方案数需要使用到前面台阶方案数的数据)
打印dp数组来debug
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BroMikey!
评论