【GZOJ】1369——小明跳楼梯

原创 2015年11月17日 21:31:49

题目链接广大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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

为了相同的前缀-跳楼梯

为了相同的前缀-跳楼梯 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 MLGX最近突然间决定要跳楼。。。。。。...
  • guoqingshuang
  • guoqingshuang
  • 2015年11月23日 19:14
  • 216

HTML游戏实战之《跳楼梯》

先看一下实际的成果:  PC玩法:点击打开链接 手机下方扫描二维码玩  开始讲解之前,打个广告,欢迎html5游戏开发爱好者扫描下方二维码或者搜群号223466431,加入开发者QQ群,我们免...
  • shenhaijy
  • shenhaijy
  • 2015年07月20日 16:05
  • 942

SDUT 3069 为了相同的前缀-跳楼梯

为了相同的前缀-跳楼梯 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 MLGX最近突然...
  • Code_KK
  • Code_KK
  • 2015年05月23日 22:17
  • 754

老鼠跳或上楼梯的问题

昨天说到这个问题,想了一些思路,今天就把它实现了一下,也是收获满满! 问题描述:这一类的问题估计大家见过很多,大致是这样的: 有n阶台阶,小明每次只能上1个或2个台阶,问他有多少种方案走完n阶台阶。...
  • nature_XD
  • nature_XD
  • 2017年04月14日 22:07
  • 609

LightOJ 1369 - Answering Queries(规律)

1369 - Answering Queries PDF (English) Statistics Forum Time...
  • zwj1452267376
  • zwj1452267376
  • 2015年11月11日 18:33
  • 531

【codevs 1742】爬楼梯

题目描述 Description 小明家外面有一个长长的楼梯,共N阶。小明的腿很长,一次能跨过一或两阶。有一天,他突发奇想,想求出从最低阶到最高阶共有几种爬楼梯的方案。你帮帮他吧!输入描述 Inpu...
  • Hall_Of_Fame_
  • Hall_Of_Fame_
  • 2017年10月18日 15:03
  • 84

面试题经典:跳台阶问题

题目: 给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶; 问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式? 分析: ...
  • leo115
  • leo115
  • 2012年10月04日 18:23
  • 8274

九度OJ—题目1205:N阶楼梯上楼问题 (非递归)

题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 输入: 输入包括一个整数N,(1 输出: 可能有多组测试数据,对于每组数据, 输出...
  • wtyvhreal
  • wtyvhreal
  • 2014年12月23日 09:54
  • 5551

斐波那契数列的思考

京东2016算法工程师笔试题 有一段楼梯台阶有15级台阶,以小明的脚力一步最多只能跨3级,请问小明登上这段楼梯有多少种不同的走法?() A:2345 B:3261 C:...
  • tengxing007
  • tengxing007
  • 2017年02月05日 18:55
  • 450

【GZOJ】1367——A*B问题

广大15级第一次周赛A题
  • Mach_Cap
  • Mach_Cap
  • 2015年11月17日 15:57
  • 332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【GZOJ】1369——小明跳楼梯
举报原因:
原因补充:

(最多只允许输入30个字)