700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 爬楼梯问题C++假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2

爬楼梯问题C++假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2

时间:2021-01-15 06:47:38

相关推荐

爬楼梯问题C++假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2

力扣题目爬楼梯

假设你正在爬楼梯。需要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种方法

两阶楼梯: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 个台阶。你有多少种不同的方法可以爬到楼顶呢?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。