力扣-动态规划-70 爬楼梯

每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?

台阶作为背包,爬几个台阶作为物体,在台阶为n时,塞任意多个台阶的方法是多少

思路

  1. dp数组定义:在爬到j个台阶前,使用m个物品做填充,可以有dp[j]种方法
  2. 递推公式:dp[i] += dp[i - j];
  3. dp数组初始化:dp[0] = 1;
  4. 遍历顺序:先背包再物品
  5. 时间复杂度:

代码

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        int m = 2;
        vector<int> dp(n+1, 0);
        dp[0] = 1;
        for(int i = 1; i <= n;i++){
            for(int j = 1; j <= m && i - j >= 0;j++){
                dp[i] += dp[i - j];
            }
        }

        return dp[n];
    }
};
相关推荐
yonuyeung1 小时前
代码随想录算法【Day57】
数据结构·算法
居然有人6542 小时前
27.贪心算法5
算法·贪心算法
夏末秋也凉2 小时前
力扣-动态规划-62 不同路径
算法·leetcode·动态规划
工大一只猿3 小时前
贪心算法-455分发饼干
算法·贪心算法
pljnb3 小时前
【LeetCode 热题100】 240. 搜索二维矩阵 II的算法思路及python代码
算法·leetcode·矩阵
迷茫小玄森4 小时前
【R语言】Kmeans算法
算法·r语言·kmeans
居然有人6544 小时前
25.贪心算法3
算法·贪心算法
大萌神Nagato5 小时前
蓝桥杯15届JavaB组6题
算法·蓝桥杯·深度优先
Swift社区6 小时前
【Swift 算法实战】利用 KMP 算法高效求解最短回文串
vue.js·算法·leetcode