杭电acm2041 超级楼梯
2011-05-22 16:17
281 查看
超级楼梯
http://acm.hdu.edu.cn/showproblem.php?pid=2041Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10475 Accepted Submission(s): 5296
[align=left]Problem Description[/align]
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
[align=left]Input[/align]
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
[align=left]Output[/align]
对于每个测试实例,请输出不同走法的数量
[align=left]Sample Input[/align]
2 2 3
[align=left]Sample Output[/align]
1 2
。。。。。。。。。。。。。。
当你到达第n阶的时候有两种到达方式。 在n-1处上 1个楼梯。在n-2处上2个楼梯。。
所以上N阶楼梯的情况总数=上n-1的总数+上n-2的总数
这样递推公式就出来了。。
f(n)=f(n-1)+f(n-2)
#include <stdio.h> int main() { __int64 dp[41]; int i, z, n; dp[0]=0; dp[1] = 1; dp[2] = 2; for (i=3;i<=40; ++i) { dp[i] = dp[i-2]+dp[i-1]; } scanf("%d", &z); while (z-- != 0) { scanf("%d", &n); printf("%I64d\n", dp[n-1]); } return 0; } #include<stdio.h> int main() { int i,n,T,s[42]; s[1]=1; s[2]=2; scanf("%d",&n); while(n--) { scanf("%d",&T); if(T==1||T==2||T==3) { printf("%d\n",T-1); continue; } for(i=3;i<=T;i++) s[i]=s[i-1]+s[i-2]; printf("%d\n",s[i-2]); } return 0; }
相关文章推荐
- 杭电acm2041 超级楼梯
- 杭电2041超级楼梯
- 杭电---2041 超级楼梯
- 杭电 2041 超级楼梯 递归
- 杭电——超级楼梯
- 杭电acm2041:递归楼梯
- 【杭电oj】- 2041-超级楼梯(上一级或两级,多少种方法)
- 杭电OJ -- 2041 超级楼梯
- 杭电ACM 2041 超级楼梯
- 超级楼梯(杭电2014)
- 【杭电】[2041]超级楼梯
- 超级楼梯(杭电2041)
- 杭电2041超级楼梯
- 杭电2041,超级楼梯,简单递归题目。
- 杭电 超级楼梯
- 杭电ACM 2041超级楼梯--&&2047阿牛的EOF牛肉串------20140728
- 杭电2041 超级楼梯
- 杭电 2041 超级楼梯 【简单递归+动态规划(Dynamic Programming)】
- 递推---杭电2041超级楼梯
- 杭电 2041 超级楼梯