超级楼梯 (递归/斐波那契数列)
2017-10-17 16:10
295 查看
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。 Output 对于每个测试实例,请输出不同走法的数量 Sample Input
Sample Output
递归思想:
#include<stdio.h>
int cnt,n;
void Dfs(int step){
if(step==n){
cnt++;
return;
}
if(step>n) return;
Dfs(step+1);
Dfs(step+2);
}
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
cnt=0;
Dfs(1);
printf("%d\n",cnt);
}
return 0;
}
斐波那契数列:
#include<stdio.h>
int num[42];
void init(){
num[1]=num[2]=1;
int i;
for(i=3;i<=40;i++)
num[i]=num[i-1]+num[i-2];
}
int main(){
int T;
scanf("%d",&T);
init();
while(T--){
int n;
scanf("%d",&n);
printf("%d\n",num
);
}
return 0;
}
Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。 Output 对于每个测试实例,请输出不同走法的数量 Sample Input
2 2 3
Sample Output
1 2
递归思想:
#include<stdio.h>
int cnt,n;
void Dfs(int step){
if(step==n){
cnt++;
return;
}
if(step>n) return;
Dfs(step+1);
Dfs(step+2);
}
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
cnt=0;
Dfs(1);
printf("%d\n",cnt);
}
return 0;
}
斐波那契数列:
#include<stdio.h>
int num[42];
void init(){
num[1]=num[2]=1;
int i;
for(i=3;i<=40;i++)
num[i]=num[i-1]+num[i-2];
}
int main(){
int T;
scanf("%d",&T);
init();
while(T--){
int n;
scanf("%d",&n);
printf("%d\n",num
);
}
return 0;
}
相关文章推荐
- 超级楼梯 --斐波那契数列
- HDOJ2041 超级楼梯 (递归与分治)
- 超级楼梯-斐波那契数列的运用
- HDU-2041 - 超级楼梯 - 斐波那契数列
- 杭电 2041 超级楼梯 递归
- ACMSTEP 3.1.1 超级楼梯 //递推 斐波那契数列
- 15HD_OJ——超级楼梯(斐波那契数列)
- 杭电2041,超级楼梯,简单递归题目。
- hdoj 超级楼梯 【递归】
- hdu 2041:超级楼梯(水题,递归)
- HDU 2041 超级楼梯【递归】
- [2041]: 超级楼梯(递归)
- HDU 2041 超级楼梯 简单DP动态规划 递归
- HD2041 超级楼梯【斐波那契数列】
- hdoj-2041 超级楼梯【递归】
- 超级楼梯(斐波那契数列应用)
- HDU 2041 超级楼梯(斐波那契数列)
- O - 超级楼梯 (斐波那契数列应用)
- HDU - 2041 C - 超级楼梯B 和HDU - 2044 一只小蜜蜂(递归)
- 斐波那契数列递归实现和非递归实现