题目链接:广大OJ1369
本题亦为广大15级第一次周赛的B题。

题目内容

Problem Description
小明很喜欢跳楼梯。
他可以一次跳一阶楼梯(记为1),也可以一次跳两个台阶(记为2)。
那么问题来了。小明跳三个台阶共有几种方法?
答案很简单,一共三种。
分别是:111,12,21。
换成语言描述就是:连跳三阶楼梯,跳一阶后再一次跳两个台阶,一次跳两个台阶后再跳一阶,共三种。
以此类推,小明跳四个台阶就一共有五种,分别是:1111,112,121,211,22。
那么问题来了。小明跳n阶台阶共有几种方法?

Input
有多组输入数据。

每组数据共一行,为一个整数n(1<=n<=70)

Output
对于每组输入数据,输出一个整数m,m为小明跳n阶楼梯的方法数。
Sample Input
1
2
4
Sample Output
1
2
5
Hint
于是小明就孤独一生了。

可喜可贺可喜可贺。

解题思路

本题有两种方法:

1.观察规律。小明跳一阶楼梯有1种方法,跳两阶楼梯有2种方法,跳三阶楼梯有3种方法,跳四阶楼梯有5种方法,依次类推,接下去的方法数为8,13,21,34,。。。。。。。
不难发现这是一个斐波那契数列,于是就可以直接按求斐波那契数列的公式来算。

2.求递推公式。利用状态转移的思想。假设小明跳n阶楼梯会有F[n]种方法,那么小明跳这n阶楼梯的所有方法可以分为两类:
一,最后一步为跳一阶的方法
二,最后一步为跳两阶的方法
最后一步为跳一阶的方法除去最后一步就是跳n-1阶楼梯的方法数,最后一步为跳两阶的方法除去最后一步就是跳n-2阶楼梯的方法数。
所以便可以得到如下递推式:
F[n]=F[n-1]+F[n-2]
然后把特殊情况列出来(因为上式对n=1和n=2的情况不适用),于是就可以在算这道式子之前先初始化F[1]为1,F[2]为2。(当然也可以初始化F[0]=1,F[1]=1)
最后你会发现,这个推出来就是斐波那契数列的递推式。

代码

#include<cstdio>
int n;
long long a[80];
int main()
{a[1]=1;a[2]=2;for(int i=3;i<=70;i++)a[i]=a[i-1]+a[i-2];while(scanf("%d",&n)==1)printf("%lld\n",a[n]);return 0;
}

【GZOJ】1369——小明跳楼梯相关推荐

  1. 再见“小明爬楼梯”问题

    在c语言期末考试中,再次见到了"小明爬楼梯"问题,而第一次见到是在某次面试题中,由于当时还没有学到递归部分,因此就仅仅把代码看了一下,然而其中包含的思想却没有弄清楚,因此在考试时见 ...

  2. 尾递归优化原理与Python实现(以Fibonacci数列和小明爬楼梯问题为例)

    首先祝全体屋友中秋节快乐! 众所周知,在函数递归调用时,要保存函数调用的位置以便使得被调函数结束后能够返回正确的位置,这个信息保存在线程栈中.由于栈的空间有限,所以如果函数递归调用深度超过一定限制,会 ...

  3. 小明爬楼梯--python

    '''题目:一共有15台阶,小明每次可以爬一节,或者两节,或者三阶. 思路: 第一种 如果把她用数学语言符号化1阶台阶分解成1,意味着只有一种方法:2可以分解成2和1 1意味着二阶台阶有两种算法.3可 ...

  4. 【Python】【小明爬楼梯】

    假设一段楼梯共15 个台阶,小明一步最多能上3个台阶.编写程序计算小明上这段楼梯一共有多少种方法.要求给出递推法和递归法两种代码. def climbStairs(n):first3={1:1,2:2 ...

  5. python小明爬楼梯_LintCode Python 简单级题目 111.爬楼梯 (斐波纳契数列 青蛙跳)

    **设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!** 1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法: 2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法: ...

  6. python小明爬楼梯_爬楼梯(Python and C++解法)

    题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数.

  7. 蓝桥杯练习 小明上楼梯(递归设计)

    小白上楼梯(递归设计) 题目 思路 源代码 题目 小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方法. 思路 可以发现,这道题就跟求斐波那契 ...

  8. C语言,可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢?n值从键盘输入。

    /*开发者:慢蜗牛 开发时间:2020.5.28程序功能:小明爬楼梯*/#include<stdio.h> int taijie(int n);long taijie(int n)//求n ...

  9. [蓝桥杯]算法提高 第二点五个不高兴的小明(记忆化搜索||动态规划)

    问题描述 有一条长为n的走廊,小明站在走廊的一端,每次可以跳过不超过p格,每格都有一个权值wi. 小明要从一端跳到另一端,不能回跳,正好跳t次,请问他跳过的方格的权值和最大是多少? 输入格式 输入的第 ...

最新文章

  1. 前向传播和反向传播_深度学习的地基模块:模型、参数、非线性、前向传播、反向偏微分
  2. mysql事务的四大特性与简单运用
  3. [hive学习翻译]Hive - Introduction
  4. 基于c语言的linux嵌入式开发入门
  5. 【程序人生】不想一辈子做底层码农?快来看看这十条箴言
  6. Oracle 用子查询创建表
  7. b-spline python_SciPyTutorial-一元B样条插值
  8. android: 播放音频
  9. docker 安装mysql_Docker安装MySQL完整版流程
  10. python gui 选择
  11. AIdl server端监听client是否掉线
  12. 三菱有C语言PLC控制器,三菱PLC可程序设计控制器系列软件介绍
  13. c# 调用有道智云翻译接口+语音组件tts
  14. GitHub 标星 6W:口吐芬芳终端助手
  15. 使用蒲公英工具箱获取设备 UDID
  16. 直连网线和交叉网线的线序
  17. The server cannot or will not process the request due to something that is perceived to be a client
  18. 手把手教你用键盘开机
  19. 微信小程序—页面内分享按钮用图标代替
  20. 高德地图使用心得,百度地图使用心得

热门文章

  1. 【SLAM】LIO-SAM解析——后端优化mapOptimization(5)
  2. 分享到微信好友或朋友圈
  3. 华为交换机重制_FAQ:5700能否通过reset按键清空配置
  4. 物联网-业务数据智能管理应用设计
  5. Chrome-谷歌邮箱gmail,登录问题”刚刚有人试图使用您的密码通过非 Google 应用登录您的帐号。Google 已阻止此次登录尝试,但您应进行检查,了解发生了什么情况......“
  6. iconfont与雪碧图的优缺点
  7. 给水排水计算机应用课件,计算机在给排水工程中的应用课件.ppt
  8. 保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展
  9. 生成keytab脚本
  10. 哪吒杯开源SPL答题竞赛,火爆来袭