视频讲解:https://www.bilibili.com/video/BV17h411h7UH/?vd_source=a935eaede74a204ec74fd041b917810c
这道题目要理解清楚,爬i阶的方法等于爬i-1阶+爬i-2阶,因为i-1阶的方法再走一步就到了,i-2阶的方法再走两步就到了,所以本质上就是个斐波那契数列。
cpp
class Solution {
public:
int climbStairs(int n) {
int jie1;
int jie2;
int jie3;
//初始化1阶2阶情况
jie1 = 1;
jie2 = 2;
//剪枝
if(n == 1 )
{
return 1;
}
if(n == 2)
{
return 2;
}
//从3阶开始dp[i]表示i+1阶所需的方法
for(int i = 2; i < n; ++i)
{
jie3 = jie1 + jie2;
jie1 = jie2;
jie2 = jie3;
}
return jie3;
}
};