童年生活二三事
题目描述
Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。
输入格式
输入包括多组数据。 每组数据包括一行:N(1≤N≤40)。 输入以0结束。
输出格式
对应每个输入包括一个输出。 为redraiment到达第n阶不同走法的数量。
样例输入
1
2
0
样例输出
1
2
思路:
本质上是斐波那契数列,这题有个更好的写法,更加节省空间。
#include<bits/stdc++.h>
using namespace std;
int a[100];
main(){
int n;
while(cin>>n){
if(n==0) break;
a[1]=1;
a[2]=2;
for(int i=3;i<=n;i++){
a[i]=a[i-1]+a[i-2];
}
cout<<a[n]<<endl;
}
}
//更好的写法
#include<bits/stdc++.h>
using namespace std;
main(){
int n;
int a,b,sum;
while(cin>>n){
if(n==0) break;
if(n==1) {
cout<<1<<endl;
}else{
a=1;
b=2;
for(int i=3;i<=n;i++){
sum=a+b;
a=b;
b=sum;
}
cout<<b<<endl;
}
}
}