LeetCode 70. 爬楼梯 使用c++解答

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

复制代码
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

复制代码
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

提示:

  • 1 <= n <= 45

是一道有趣的题目,可以用来当成动态规划的入门练习

class Solution {
public:
    int climbStairs(int n) {
        if (n <= 1) {
            return 1;
        }
        int prev1 = 1;
        int prev2 = 1;
        for (int i = 2; i <= n; ++i) {
            int current = prev1 + prev2;
            prev1 = prev2;
            prev2 = current;
        }
        return prev2;
    }
};
  1. prev1prev2 的含义:

    • prev1 表示爬到前一阶楼梯的方法数。
    • prev2 表示爬到前两阶楼梯的方法数。

例子分析

假设 n=5,即求解爬到第 5 个台阶的方法总数。

  1. 初始状态

    • prev1 = 1(f(1))
    • prev2 = 1(f(0))
  2. 迭代过程

    • i=2i = 2i=2:
      • current = prev1 + prev2 = 1 + 1 = 2(f(2))
      • 更新:prev1 = 1prev2 = 2
    • i=3i = 3i=3:
      • current = prev1 + prev2 = 1 + 2 = 3(f(3))
      • 更新:prev1 = 2prev2 = 3
    • i=4i = 4i=4:
      • current = prev1 + prev2 = 2 + 3 = 5(f(4))
      • 更新:prev1 = 3prev2 = 5
    • i=5i = 5i=5:
      • current = prev1 + prev2 = 3 + 5 = 8(f(5))
      • 更新:prev1 = 5prev2 = 8
  3. 结果

    • prev2 最终为 8,即爬到第 5 个台阶的方法总数。
相关推荐
蜀黍@猿10 分钟前
C/C++基础错题归纳
c++
古希腊掌管学习的神13 分钟前
[搜广推]王树森推荐系统笔记——曝光过滤 & Bloom Filter
算法·推荐算法
qystca14 分钟前
洛谷 P1706 全排列问题 C语言
算法
古希腊掌管学习的神18 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
浊酒南街19 分钟前
决策树(理论知识1)
算法·决策树·机器学习
雨中rain25 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
就爱学编程27 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
学术头条32 分钟前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
Schwertlilien1 小时前
图像处理-Ch4-频率域处理
算法
IT猿手1 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法