题目大意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
解题思路:该题为斐波拉契数列,若走到第n阶阶梯,可以是第n-1阶阶梯上一阶或者第n-2阶阶梯上两阶。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[41];
a[1]=0;
a[2]=1;
a[3]=2;
for(int i=4;i<=41;i++)
{
a[i]=a[i-1]+a[i-2];
}
int n,m;
cin>>n;
while(n--)
{
cin>>m;
cout<<a[m]<<endl;
}
return 0;
}
遇到的问题:忘记了当M=1时的情况,这时应为0种。