超级楼梯

超级楼梯

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 59   Accepted Submission(s) : 22
Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
 

 

Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
 

 

Output
对于每个测试实例,请输出不同走法的数量
 

 

Sample Input
2 2 3
 

 

Sample Output
1 2
 

 

Author
lcy
 

 

Source
2005实验班短学期考试类似于DP的模拟把
 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     int N,M,i,a[100],sum;
 7     scanf("%d",&N);
 8     while(N--)
 9     {
10         scanf("%d",&M);
11         for(i=0,sum=0;i<M;i++)
12         {
13             if(i==0)
14             {
15                 a[i]=0;continue;
16             }
17             if(i==1)
18             {
19                 a[i]=1;continue;
20             }
21             if(i==2)
22             {
23                 a[i]=2;continue;
24             }
25             a[i]=a[i-1]+a[i-2];
26         }
27         printf("%d\n",a[M-1]);
28     }
29     return 0;
30 }
View Code

修改:2015.5.12(DP)

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <queue>
 5 #include <algorithm>
 6 #include <math.h>
 7 using namespace std;
 8 int DP[45]={0};
 9 int main()
10 {
11     int N,i,n;
12     for(i=2,DP[1]=1;i<=40;i++)
13     {
14         DP[i]=DP[i-1]+DP[i-2];
15     }
16     scanf("%d",&N);
17     while(N--)
18     {
19         scanf("%d",&n);
20         printf("%d\n",DP[n]);
21     }
22     return 0;
23 }
View Code

 

 

posted @ 2014-05-24 19:33  Wurq  阅读(186)  评论(0编辑  收藏  举报