力扣-动态规划-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];
    }
};
相关推荐
重生之后端学习13 分钟前
19. 删除链表的倒数第 N 个结点
java·数据结构·算法·leetcode·职场和发展
aini_lovee21 分钟前
严格耦合波(RCWA)方法计算麦克斯韦方程数值解的MATLAB实现
数据结构·算法·matlab
安特尼38 分钟前
推荐算法手撕集合(持续更新)
人工智能·算法·机器学习·推荐算法
鹿角片ljp44 分钟前
力扣14.最长公共前缀-纵向扫描法
java·算法·leetcode
Remember_9931 小时前
【数据结构】深入理解优先级队列与堆:从原理到应用
java·数据结构·算法·spring·leetcode·maven·哈希算法
偷星星的贼111 小时前
C++中的状态机实现
开发语言·c++·算法
程序员敲代码吗1 小时前
C++中的组合模式实战
开发语言·c++·算法
52Hz1182 小时前
二叉树理论、力扣94.二叉树的中序遍历、104.二叉树的最大深度、226.反转二叉树、101.对称二叉树
python·算法·leetcode
Shirley~~2 小时前
leetcode移除元素
javascript·数据结构·算法
普贤莲花2 小时前
新生2026年1月20日---星期二(大寒)
程序人生·算法·leetcode