杭电Oj刷题(2041)

超级楼梯

题目描述:

有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?

Input

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

Output

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

Sample Input

2 
2 
3

Sample Output

1 
2

通过答案:

#include<stdio.h>    //分析:从第一级走上第二级只能走一步,只有1种走法。
                     //从第一级走上第三级,可以从第一级直接走两步,也可以从第二级走一步。有2种走法
                     //走上第n级,可以从第n-1级走一步上来,也可以从第n-2级走两步上来。 
int a[50];           //用数组存放步数 
int f(int n){        //斐波那契函数 
	a[1]=1;
	a[2]=1;
	for(int i=3;i<=n;i++){
		a[i]=a[i-1]+a[i-2];
	}
}              
int main(){
    int m,n,i; 
    while(scanf("%d",&m)!=EOF){
        while(m--){
        	scanf("%d",&n);
        	f(n);
        	printf("%d\n",a[n]);
		}
    }
    return 0;
}
发布了55 篇原创文章 · 获赞 0 · 访问量 999

猜你喜欢

转载自blog.csdn.net/ZhangShaoYan111/article/details/104225445