解题思路:上到M级楼梯有两种方式,一种是从M-1级楼梯跨一级台阶,一种是从M-2级楼梯跨两级台阶,设从第一级走到M-1级台阶不同走法为f(M-1),从第一级台阶走到M-2级台阶不同走法为f(M-2),故上到M级台阶的方式共有f(M-1)+f(M-2)
代码实现:
#include<iostream>
using namespace std;
int main()
{
int m,n;
cin>>n;
int a[50];
int i;
a[1]=0;
a[2]=1;
a[3]=2;
for(i=4;i<50;i++)
{
a[i]=a[i-1]+a[i-2];
}
while(n--)
{
cin>>m;
cout<<a[m]<<endl;
}
return 0;
}
遇到的bug:刚开始是在一级台阶,并不是在一级台阶下面,所以a[1]=0