2041 超级楼梯
刚开始做的时候试图寻找规律,到了第六个时发现是斐波那契数列。
其实这一题按照逆向思维来思考非常简单,从目的地向前推,可以发现
走向第N级的前一步有两种,即从N-1或N-2级到达,则走法共有(N-1)+(N-2)种,即斐波那契数列。
Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
2 2 3
Sample Output
1 2
#include <stdio.h>
int setfn(int n)
{
int i,fn[40]={0,1,1,2};
if(n==1||n==2)
return fn[n];
if(n==3)
return fn[n];
for(i=4;i<=n;i++)
fn[i]=fn[i-2]+fn[i-1];
return fn[n];
}
int main(void){
int n,m;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
printf("%d\n",setfn(m));
}
return 0;
}