超级楼梯Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23642    Accepted Submission(s): 12153Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。Output
对于每个测试实例,请输出不同走法的数量Sample Input
2
2
3Sample Output
1
2Author
lcySource
2005实验班短学期考试
Recommend
lcy


  水题,递归。

  很有意思的一道递归题,用普通的递归会超时,需要改用记忆递归法。记忆递归法,牺牲空间来换取时间,可以采用数组(数组空间浪费大,但是读取速度快)。

code:

 1 Problem : 2041 ( 超级楼梯 )     Judge Status : Accepted
 2 RunId : 8925185    Language : G++    Author : freecode
 3 Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
 4
 5 #include <iostream>
 6 using namespace std;
 7
 8 /*  用普通递归会超时,改用记忆递归法(将数据存储在数组里)
 9 int m;
10
11 int f(int n)
12 {
13     if(n>m)
14         return 0;
15     else if(n==m)
16         return 1;
17     else
18         return f(n+1)+f(n+2);
19 }
20 */
21
22 int main()
23 {
24     /*
25     int T;
26     cin>>T;
27     while(T--){
28         cin>>m;
29         cout<<f(1)<<endl;
30     }
31     */
32
33     int a[41];
34     a[1]=1,a[2]=1;
35
36     for(int i=3;i<=40;i++)  //记忆递归法。牺牲空间,换取时间。
37         a[i]=a[i-1]+a[i-2];
38
39     int T,m;
40     cin>>T;
41     while(T--){
42         cin>>m;
43         cout<<a[m]<<endl;
44     }
45     return 0;
46 }


  第二次做。

  水题。

  常规做法会超时,输出几组连续的测试数据会发现,输出结果是斐波那契数列。那么题目就简单了,直接构造一个40以内的斐波那契数列即可,f1=1,f2=1。

  常规做法是写一个递归,作用是记录当前走到了哪一级阶梯(假设为n),所以出口是当n>M(直接return;)或者n==M(sum++;return ;),递归体是f(n+1)然后f(n+2),分别表示当前走1级阶梯和2级阶梯的情况。

  代码:

 1 #include <iostream>2 3 using namespace std;4 int sum;5 int m;6 int a[41];7 void f()8 {9     a[1] = 1;
10     a[2] = 1;
11     for(int i=3;i<=40;i++)
12         a[i] = a[i-1] + a[i-2];
13 }
14 int main()
15 {
16     int n;
17     f();
18     cin>>n;
19     while(n--){
20         cin>>m;
21         cout<<a[m]<<endl;
22     }
23     return 0;
24 }

Freecode : www.cnblogs.com/yym2013

hdu 2041:超级楼梯(水题,递归)相关推荐

  1. HDU - 2041 - 超级楼梯(dp)

    题意: 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? 思路: 如何到第n阶台阶,只能从n-1和n-2台阶上去,那么只需要计算到n-1阶台阶和到n-2阶台 ...

  2. HDU 2041 超级楼梯

    Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是 ...

  3. 航电 2041 超级楼梯

    超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. 杭电hduoj 2041 超级楼梯

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 算法特工队QQ群:979618872 (伸手党绕边,欢迎有良好基础的人加入) // // Cre ...

  5. HDU 6168 Numbers 思维 水题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6168 题目描述: 定义数组b是由数组a每两项的和组成的,现在将数组A, B混在一起给你, 筛出数组A ...

  6. HDOJ 2041 超级楼梯

    Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是 ...

  7. HDU 4393 Throw nails [水题]

    题解写了N多方法,我用的是最水的那种.. 起始区间只有(0 <= Fi <= 500),500秒之后排名必然不会变化了..所以,暴力500秒,然后排个序就行了. 1 #include &l ...

  8. HDU - 2091 空心三角形 水题,但是有点坑...

    空心三角形 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  9. hdu 4823 Energy Conversion(水题)

    Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

最新文章

  1. Visual Studio中断NPM套件库服务
  2. postman接口测试和压力测试
  3. 二十、Pyecharts数据可视化
  4. 路径处理库pathlib使用详解
  5. jquery easyui 弹出消息框
  6. GetModuleHandle(NULL)获取当前DLL模块基址?
  7. 【转载】关于 Google Chrome 中的全屏模式和 APP 模式
  8. 使用Matlab(R2018b)画复杂函数的图形(网格图meshgrid)及等高线contour
  9. Idea 依赖冲突一分钟解决2种方案
  10. 蒙特卡罗模拟法 —— python
  11. 画出计算机网络的一般组成,计算机网络习题(有答案).pdf
  12. 再回首Java第二天
  13. 都说程序员穿衣就是这么丑,你该看看人家硅谷精英
  14. Python3.6 安装pandas包的方法
  15. Vmware中linux端口映射,让外网/ssh访问虚拟机Linux
  16. 计算机毕业设计的读书笔记,毕业设计之读书笔记
  17. hadoop进阶---hadoop性能优化(一)---hdfs空间不足的管理优化
  18. antd日期组件配置了中文后还是显示英文的解决过程
  19. linux访问局域网共享,精解局域网访问及共享(三)
  20. 电脑中PDF如何转换成WPS格式

热门文章

  1. 动力节点的课堂笔记_男孩把历史笔记画成“漫画”,同学成小粉丝,网友:别人家的孩子...
  2. SpringDataJpa使用原生sql(EntityManager)动态拼接,分页查询
  3. liunx 学习笔记-wzq
  4. iOS网络缓存扫盲篇
  5. IOS后台运行机制详解(一)
  6. Http协议原理解析
  7. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建
  8. 驱动华为_再补齐一个短板,华为正式宣布进军屏幕驱动行业
  9. oracle游标的基础应用,Oracle 基础的游标的使用
  10. 计算机网络有限制,计算机网络中软件限制策略的应用规则有哪些