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

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

4个月前 (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阶的总方案数
    }
};


原创内容 转载请注明出处

分享给朋友:

相关文章

力扣119题:从O(n²)到O(2n):杨辉三角高效空间优化

力扣119题:从O(n²)到O(2n):杨辉三角高效空间优化

题目重解:给定一个非负索引 rowIndex,返回杨辉三角的第 rowIndex 行。不同于生成整个杨辉三角,这道题要求我们只返回特定行,且空间复杂度应尽可能优化。例如输入3,需要返回[1,3,3,1...

力扣第92题:三步定位 精准反转链表指定区间

力扣第92题:三步定位 精准反转链表指定区间

题目解读给定一个单链表和两个整数left与right,要求将链表中从第left个节点到第right个节点的部分进行反转,而保持其他部分不变。例如,对于链表1→2→3→4→5,left=2,right=...

从零到一掌握背包问题:洛谷P1164题解精讲,附带优化

从零到一掌握背包问题:洛谷P1164题解精讲,附带优化

题目重解:小A带着m元钱来到餐馆,菜单上有n道菜,每道菜都有确定的价格。现在需要计算出刚好花完m元的点菜方案总数。这个问题看似简单,但当菜品数量增多时,暴力枚举就会变得不可行,需要更高效的算法来解决。...

手搓顺序表类代码注释与详解:从零实现动态数组(新手教程)

一、简介和特点顺序表(Sequential List)是数据结构中基础的一种线性表,其特点是将数据元素存储在连续的内存空间中。通过数组实现,支持随机访问(即通过索引直接访问元素),适用于频繁随机读取的...

NOIP 2008火柴棒等式题解(C++代码实现)  动态规划与枚举算法详解

NOIP 2008火柴棒等式题解(C++代码实现) 动态规划与枚举算法详解

一、题目解读火柴棒等式问题(NOIP 2008,洛谷P1149)要求使用给定数量的火柴棒,构造形如 A + B = C 的等式,其中A、B、C均为整数,且火柴棒总数恰好等于输入值。需统计符合条件的等式...

牛客25461题解析:花园喷泉距离优化算法(动态规划+后缀数组解法)

牛客25461题解析:花园喷泉距离优化算法(动态规划+后缀数组解法)

一、题目解读牛客25461题要求计算一个花园中n朵花到两个喷泉的最小距离平方和。用户需输入喷泉坐标(x1,y1)和(x2,y2),以及n朵花的坐标(x,y),通过合理分配每朵花到两个喷泉的距离,使总距...

发表评论

访客

看不清,换一张

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