当前位置:首页 > 力扣 > 70.爬楼梯|三步破解动态规划核心奥秘

70.爬楼梯|三步破解动态规划核心奥秘

10个月前 (05-14)

70.爬楼梯|三步破解动态规划核心奥秘 力扣 C++ 动态规划 算法 第1张

题意新解:

站在楼梯底仰望n级台阶,每步可选1或2阶,最终的路径组合犹如斐波那契数列般展开。比如到达第3阶的路径可由第1阶跨两步,或第2阶跨一步构成,这种递推规律揭示了两两相邻状态间的紧密关联。


思路解析:

采用‌动态规划‌策略,构建数组f存储子问题解:

1‌.状态定义‌:f[i]表示到达第i阶的方案数

2‌.边界条件‌:初始状态f[0]=1(平地不动)、f[1]=1(单步直达)

3‌.状态转移‌:循环计算f[i] = f[i-1] + f[i-2],将问题分解为前一级和前两级的子问题之和

4‌.空间特性‌:线性数组存储中间结果,时间复杂度O(n),空间复杂度O(n)

通过递推填充数组,最终直接返回f[n],避免递归开销,通过表格记录保证每个状态仅计算一次。


注释代码:

class Solution {
public:
    int climbStairs(int n) {
        int f[100];          // 定义DP数组,预留足够空间(题目n≤45)
        f[0] = 1;            // 初始状态:0阶视为1种方案(数学定义需要)
        f[1] = 1;            // 边界条件:到达第1阶仅有1种走法
        
        for(int i = 2; i <= n; i++) {
            f[i] = f[i-1] + f[i-2];  // 状态转移:合并前两阶的可能性
        }
        
        return f[n];         // 返回第n阶的总方案数
    }
};


原创内容 转载请注明出处

分享给朋友:

相关文章

力扣第75题新思路:如何用选择排序实现原地操作?

力扣第75题新思路:如何用选择排序实现原地操作?

给定一个包含红色、白色和蓝色元素的数组,分别用数字 0、1、2 表示,要求在不使用库排序函数的情况下,仅通过一次遍历(但实际上允许使用经典排序方法)对数组进行原地排序。题目要求将所有 0 排在前面,1...

力扣1221:一次扫描解决分割平衡字符串 时间O(n)空间O(1)

力扣1221:一次扫描解决分割平衡字符串 时间O(n)空间O(1)

题目重解给定一个仅包含'L'和'R'的字符串,要求将其分割成尽可能多的子串,且每个子串中'L'和'R'的数量相等。例如输入"R...

力扣第71题:用栈轻松解决Unix路径简化问题

力扣第71题:用栈轻松解决Unix路径简化问题

题目解读:在Unix风格的文件系统中,我们经常需要处理各种复杂的路径表示。给定一个绝对路径字符串,我们需要将其转换为最简化的规范路径。规范路径要求:路径始终以斜杠'/'开头;两个目录名...

力扣965题深度解析:单值二叉树的判断技巧

力扣965题深度解析:单值二叉树的判断技巧

重新解读题目 判断一棵二叉树是否为“单值二叉树”,即所有节点的值是否完全相同。题目看似简单,实则考验对树结构递归特性的理解。若一棵树的所有节点值相同,其必然满足:根节点与左右子树的值一致,且...

GESP2023年六级真题解析:动态规划解决小杨买饮料问题(洛谷3873)

GESP2023年六级真题解析:动态规划解决小杨买饮料问题(洛谷3873)

一、题目解读小杨买饮料是GESP 2023年六级认证考试中的一道经典动态规划题目,考察学生对背包问题的理解和应用能力。题目描述小杨需要购买n种饮料,每种饮料有特定的体积w和价格v,他要在不超过容量l的...

CSP-J 2019纪念品题解(洛谷P5662):动态规划+完全背包问题的实战应用

CSP-J 2019纪念品题解(洛谷P5662):动态规划+完全背包问题的实战应用

一、题目解读2019年CSP-J的“纪念品”问题(对应洛谷P5662)要求玩家在T天内通过买卖纪念品最大化金币收益。每天可交易N种商品,需计算最优策略下的最终金币数。题目强调动态规划思维与资源分配优化...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。