动态规划记录

这篇博客探讨了使用动态规划解决爬楼梯问题的方法。代码中定义了一个`climbStairs`函数,通过初始化一个dp数组并用两个循环来更新数组元素,其中dp[i]表示到达第i阶楼梯的方法数。每个dp[i]的值由前m个台阶(包括本身)的组合计算得出。题目中提到,每次可以走m阶楼梯,当m为2时,代码能正确解答爬楼梯的经典问题。
摘要由CSDN通过智能技术生成
  1. 确定dp数组及其下标的含义
  2. 确定递推公式
  3. dp数组初始化
  4. 确定遍历顺序
  5. 推导dp数组

台阶问题:d[i] = d[i-1] + d[i-2]

每次可以走m阶楼梯
class Solution {
public:
    int climbStairs(int n) {
        vector<int> dp(n + 1, 0);
        dp[0] = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) { // 把m换成2,就可以AC爬楼梯这道题
                if (i - j >= 0) dp[i] += dp[i - j];
            }
        }
        return dp[n];
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值