爬楼梯问题

蒜头君自从春节回来以后,体重就像加了特技一样duang~duang~地暴增起来。于是小蒜头打算每天爬楼梯来燃烧体内的脂肪(咦?蒜怎么会有脂肪=.=)。蒜头在爬楼梯的时候脑洞大开,因为蒜头腿短,爬楼梯的时候一次只能迈1级或2级台阶,它就想到了,假如一共有n级台阶的话,它一共有多少种方法能够爬到楼梯顶部呢?  聪明的你快来帮帮小蒜头吧~建议你使用动态规划求解哦,直接搜索是会超时的^o^  输入格式:     第一行输入一个数n(n<=50),代表楼梯的级数。  输出格式:     第一行输出你的方法总数。  样例1  输入:  5 输出:  8
<img src="https://img-blog.csdn.net/20160403000122505?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
这里假设总共8级楼梯,开个数组stairs[8],默认值为0,
假如我们最后走到第八级,那么依据题意可以从
第六级也可以从第七级走到第八级,那么走到第八级的
总的方法就是走到第六级的方法加上走到第七级的方法,
而走到第六级的方法可以由第四级和第五级得到,第七级可以
由第五级和第六级得到,依次类推,第三级可以由第一级和第二级
得到,所以可以推出这个式子,stairs[i] = stairs[i-1] + stairs[i-2];
而第一级和第二级可以马上看出来分别为1种和2种方法,所以
马上的每个台阶的方法数就可以根据这个推出来的式子求解了
#include"iostream"
using namespace std;

int main()
{
    int stairs[50]{0};
    stairs[0] = 1;
    stairs[1] = 2;
    for(int i = 2; i < 50; i++)
    {
        stairs[i] = stairs[i-1] + stairs[i-2];
    }
    int num;
    cin>>num;
    cout<<stairs[num-1]<<endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值