GDUFE ACM-1001
题目:http://acm.gdufe.edu.cn/Problem/read/id/1001
走楼梯
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
有一楼梯共M级.刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input:
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(2<=M<=40),表示楼梯的级数。
Output:
对于每个测试实例,请输出不同走法的数量。
Sample Input:
5 2 3 4 5 39
Sample Output:
1 2 3 5 63245986
思路:这个的结果是一个有规律的数列,套公式an=a(n-1)+a(n-2) (n>2)就可以了。
难度:主要是公式比较难想出来。。。
代码:
1 #include<stdio.h> 2 int main() 3 { 4 int n,m,i; 5 int ch[41]; 6 while(scanf("%d",&n)!=EOF) 7 { 8 while(n--) 9 { 10 scanf("%d",&m); 11 ch[2]=1; 12 ch[1]=1; 13 if(m>2) 14 for(i=3;i<=m;i++) 15 ch[i]=ch[i-1]+ch[i-2]; 16 printf("%d\n",ch[m]); 17 } 18 } 19 return 0; 20 }