问题链接:HDU2041 超级楼梯。基础训练题,用C语言编写程序。

问题简述:参见上述链接。

问题分析:这是一个递推的问题。站在楼梯的第n级想一下,前一步是从哪里来的,问题就清楚了。

由于每次只能上一级或两级,那么f(n)=f(n-2)+f(n-1)。这不就是一个菲波拉契数列吗?就是一个递推问题?

可是,开始时候是站在第1级台阶上,所以数列的开始几项会有所不同。

f(1)=0,因为开始就站在第1级台阶上;

f(2)=1,只能从第1级台阶上1级;

f(3)=2,只能从第1级台阶上2级,或只能从第2级台阶上1级;

f(n)=f(n-2)+f(n-1),n>3。

得到上述递推关系后,便写了一个函数来计算f(n),程序如下:

unsigned long long fib(int n)
{if(n == 1)return 0;else if(n == 2)return 1;else if(n == 3)return 2;elsereturn fib(n-2) + fib(n-1);
}

一用这个函数来解决问题,时间上就爆了。

先打表,问题就解决了。

程序说明:(略)

AC的C语言程序如下:

/* HDU2041 超级楼梯 */#include <stdio.h>#define MAXN 40typedef unsigned long long ULL;ULL fn[MAXN+1];void setfn()
{int i;fn[1] = 0;fn[2] = 1;fn[3] = 2;for(i=4; i<=MAXN; i++)fn[i] = fn[i-2] + fn[i-1];
}int main(void)
{int n, m;// 先打表setfn();scanf("%d", &n);while(n--) {scanf("%d", &m);printf("%lld\n", fn[m]);}return 0;
}

转载于:https://www.cnblogs.com/tigerisland/p/7564648.html

HDU2041 超级楼梯相关推荐

  1. HDU2041 超级楼梯【递推+水题】

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

  2. 整数实例hdu2041(超级楼梯)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! Problem Description 有一楼梯共M级,刚开始时你在第一级, ...

  3. HDU2041超级楼梯

    列出前几个数据,你会发现结果跟菲波纳茨数列有点像 #include <iostream> using namespace std; int main() { int n,m; int a[ ...

  4. 超级楼梯[HDU2041]

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

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

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

  6. 航电 2041 超级楼梯

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

  7. 超级楼梯HDOJ2041

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

  8. 【qduoj】【超级楼梯进阶版】

    题干: 描述 N级阶梯,人可以一步走一级,也可以一步走两级,求人从阶梯底端走到顶端可以有多少种不同的走法. 输入 一个整数n,代表台阶的阶数. 输出 求人从阶梯底端走到顶端可以有多少种不同的走法,输出 ...

  9. 超级楼梯HDU2041

    由递推关系,到n-1时有一种走法,n-2时有2种走法,所以 An=An-1+2*An-2 1 #include<stdio.h> 2 main() 3 { 4 int n,m,i; 5 d ...

最新文章

  1. 思科3750开启策略路由功能
  2. UITableview 多行删除
  3. hive mysql 删除表_Hive-删除表(drop、truncate的区别)
  4. oracle sql 艺术,Oracle PL/SQL 从if 到 then的“艺术鉴赏”
  5. 常用正则表达 (转)
  6. sass部分知识小结
  7. 无监督学习 k-means_无监督学习-第2部分
  8. Yann LeCun, Geoffrey E. Hinton, and Yoshua Bengio
  9. 平衡二叉树的自顶向下递归和自底向上递归
  10. Python开发第一篇 基础篇(下)
  11. MFC开发IM-第二十六篇、vs2008添加库文件
  12. dll导出类比较好的方式
  13. 分布式系统必读中文版-分布式系统模式-分享
  14. 金仓数据库KingbaseES之libpq通过服务名连接数据库
  15. Java的指针碰撞简介
  16. 如何快速搭建自己的github.io博客
  17. VC实现EXCEL转换为CSV格式
  18. nginx整合fastdfs出现2个master进程没有worker进程的原因以及解决方法
  19. 渗透测试-安全岗位面试题总结(含答案)
  20. office 2013 已停止工作;word excel 打开任何文件

热门文章

  1. es5.4.0-CentOS-6.5-x86_64安装文档
  2. github创建maven项目过程
  3. 恢复出厂设置后itms注册失败_手机恢复出厂设置后,与新手机的区别已被确认,望大家相互转告!...
  4. Hadoop平台优化综述(一)
  5. Android编程之ActivityManager: Segmentation fault
  6. 启动数据库时提示ORA-03113: 通信通道的文件结尾解决方法
  7. 聊聊 scala 的模式匹配 1
  8. mac flutter 开发环境配置 从0到1 流程
  9. 一个 Safari 的 new Date() bug
  10. 关于编写过程中进制之间的转换