hdu 2041:超级楼梯(水题,递归)

时间:2022-12-18 19:38:32
超级楼梯

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

  水题,递归。

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

code:

 Problem :  ( 超级楼梯 )     Judge Status : Accepted
RunId : Language : G++ Author : freecode
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta #include <iostream>
using namespace std; /* 用普通递归会超时,改用记忆递归法(将数据存储在数组里)
int m; int f(int n)
{
if(n>m)
return 0;
else if(n==m)
return 1;
else
return f(n+1)+f(n+2);
}
*/ int main()
{
/*
int T;
cin>>T;
while(T--){
cin>>m;
cout<<f(1)<<endl;
}
*/ int a[];
a[]=,a[]=; for(int i=;i<=;i++) //记忆递归法。牺牲空间,换取时间。
a[i]=a[i-]+a[i-]; int T,m;
cin>>T;
while(T--){
cin>>m;
cout<<a[m]<<endl;
}
return ;
}

  第二次做。

  水题。

  常规做法会超时,输出几组连续的测试数据会发现,输出结果是斐波那契数列。那么题目就简单了,直接构造一个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)

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

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

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

  3. hdu 2041 超级楼梯

    斐波那契数列,看清题意,当前为第一阶,给出M(每次只能跨1阶或2阶) 从第一阶到M,若M=1,从1-1不用走,0种方法 若M=2 从1-2  一种方法  -> 1.走一次一阶 若M=3 从1-3 ...

  4. hdu 1106&colon;排序(水题,字符串处理 &plus; 排序)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  5. HDU 4950 Monster (水题)

    Monster 题目链接: http://acm.hust.edu.cn/vjudge/contest/123554#problem/I Description Teacher Mai has a k ...

  6. HDU 4813 Hard Code 水题

    Hard Code Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.act ...

  7. HDU 4593 H - Robot 水题

    H - RobotTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.act ...

  8. HDOJ&sol;HDU 2560 Buildings&lpar;嗯~水题&rpar;

    Problem Description We divide the HZNU Campus into N*M grids. As you can see from the picture below, ...

  9. HDOJ&lpar;HDU&rpar; 1859 最小长方形&lpar;水题、、&rpar;

    Problem Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内 ...

随机推荐

  1. Hashtable在ViewState中无法增加值

    在我调试程序的时候,我发现WebForm 2.0和MVC3解析ViewState的方式不同,同样的代码,在Weorm中管用,在MVC中不起作用. private Hashtable ht { get ...

  2. ubuntu server配置xmanager

    ubuntu server配置xmanager   ubuntu是典型的多用户多任务操作系统,通过XDMCP方式可以轻松的实现远程的多用户同时登录ubuntu任务.   www.2cto.com   ...

  3. 201521123089 《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 1.1 除了使用synchronized修饰方 ...

  4. linux&lpar;4&rpar; vi编辑&sol;删除、复制、粘贴 &sol;bash shell 环境变量设置&sol;数据流重定向 &vert; 的用法

    一.vi文字处理器1.vi与vimvi:文字处理器vim:程序开发工具2.vi介绍三种模式:一般模式(vi刚进入的,不可编辑),编辑模式(按i后,左下方是insert)和命令行模式(按esc退出,:w ...

  5. 【一天一道LeetCode】&num;79&period; Word Search

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  6. springcloud 设置feign超时时间

    转载网址:http://www.pianshen.com/article/187038775/

  7. 阿里云yum配置

    CentOS 安装源列表见 CentOS Mirror List.本文使用阿里云安装源安装官方源和扩展源.其他安装源也可以参考. 依次执行命令. #使用 yum-config-manager 软件包命 ...

  8. 严重&colon; A child container failed during start的问题解决方法

    找到tomcat中的server.xml中的文件, 将图中阴影的部分注释掉,即可.

  9. C&num; 连接Oracle数据库,免安装oracle客户端

    一.方案1 首先下面的内容,有待我的进一步测试和证实.18.12.20 被证实了,还需要安装Oracle客户端,或者本机上安装oracle数据库软件. 18.12.20 1.下载Oracle.Mana ...

  10. C&num;读写txt文件的两种方法介绍&lbrack;转&rsqb;

    C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...