超级楼梯
2015-08-27 16:10
363 查看
[align=left]Problem Description[/align]
[align=left] [/align]
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
[align=left]Input[/align]
[align=left] [/align]
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
[align=left]Output[/align]
[align=left] [/align]
对于每个测试实例,请输出不同走法的数量
[align=left]Sample Input[/align]
[align=left] [/align]
[align=left]Sample Output[/align]
[align=left] [/align]
1
2
递归思想
刚开始是站在第一级楼梯上的
用递归的方法写会超时,所以用for循环
递归的特点:自上而下
循环的特点:自下而上
[align=left] [/align]
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
[align=left]Input[/align]
[align=left] [/align]
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
[align=left]Output[/align]
[align=left] [/align]
对于每个测试实例,请输出不同走法的数量
[align=left]Sample Input[/align]
[align=left] [/align]
2 2 3
[align=left]Sample Output[/align]
[align=left] [/align]
1
2
递归思想
刚开始是站在第一级楼梯上的
用递归的方法写会超时,所以用for循环
递归的特点:自上而下
循环的特点:自下而上
#include <stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int main() { int T; int a[50]; scanf("%d",&T); while(T--) { int m,i;//m表示楼梯的级数 scanf("%d",&m); a[1]=1;//上一级楼梯有一种方法 a[2]=1;//上二级楼梯有一种方法 for(i=3;i<=40;i++)//题目中说楼梯的级数不超过40 { a[i]=a[i-1]+a[i-2]; } printf("%d\n",a[m]); } return 0; }
相关文章推荐
- xib 加载另一个 xib的各个场景
- zabbix企业应用之如何快速查看异常流量
- 数字图像处理的就业前景
- 多源地理空间矢量数据融合理论与方法研究
- VMware CentOS网络连接设置
- poj2185Milking Grid【kmp next数组求循环节】
- 凸优化和非凸优化
- Postgresql自增
- Aspose.Words如何重命名合并字段
- Centos系统更改 yum源为163
- 树的子结构
- 响应式图片的3种解决方案
- Linux安装软件总结 (一.安装方法介绍)
- 纯CSS3实现飘逸洒脱带有飞行效果的三级下拉菜单
- 抽取任意层特征---caffe使用MemoryDataLayer从内存中加载数据
- devstack nova-docker local.conf
- 损失函数(loss function)
- DOM对象
- [LeetCode] Maximal Rectangle(!!!DP)
- EqualizeHist函数