力扣题目爬楼梯
假设你正在爬楼梯。需要n
阶你才能到达楼顶。
每次你可以爬1
或2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
我们可以先把前几组写出来
一阶楼梯:1种方法
两阶楼梯:2种方法
三阶楼梯:1+2=3种方法
四阶楼梯:2+3=5种方法
五阶楼梯:3+5=8种方法
六阶楼梯:5+8=13种方法......以此类推,我们发现规律:从第三项开始,前两个结果相加,第i项=第i-1项+第i-2项。这个规律与斐波那契数列类似,可用其思想求解,代码如下:
classSolution{
public:
intclimbStairs(intn){
intnum1=1;
intnum2=2;
inttep=0;
if(n<=2)
{
returnn;
}
else
{
for(inti=2;i<n;i++)
{
tep=num1+num2;
num1=num2;
num2=tep;
}
returntep;
}
}
intmain()
{
intn=0;
printf("请输入一个正整数->");
scanf("%d",&n);
inta=climbStairs(n);
printf("%d\n",a);
system("pause");
return0;
}
};
参考:CSDN博主be_gin_ner
爬楼梯问题C++假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?