超级楼梯

说是超级楼梯,其实这个题可以有很多的变法,但是都是换汤不换药。
首先,规定一开始的时候在第一个台阶,其实就是暗含了如果是输入的台阶数是1的时候有0种走法,而当是1的时候,又规定每次走的台阶数都是1或2,所以只有一种走法,而当有个台阶的时候,走法就会有1-1-1和1-2两种,走法,而当是4的时候,则有1-1-2,1-1-1-1和1-2-1三种,而当是5的时候,则有1-1-1-2,1-1-1-1-1,1-2-1-1,1-1-2-1和1-2-2五种,根据这个规律容易得出当台阶数大于3时,走的方法都是前两个之和,由此得出递推公式f(n)=f(n-1)+f(n-2)
下面是代码

#include<iostream>
#include<cstdlib>
using namespace std;

int zoufa(int x)
{
    if(x<=3)
        return x-1;
    else
        return zoufa(x-1)+zoufa(x-2);
}
int main()
{
    int n;
    cin>>n;
    int i;
    int a[1000];
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<n;i++)
    {
    int m=0;
    m=zoufa(a[i]);
    cout<<m<<endl;
    }




    return 0;
}


/*
(使用二叉树的方法)开始在第一个台阶
之后每一次可以走一个台阶或两个台阶
可以使用树
左边的是一个台阶
右边的是两个台阶
所有台阶之后等于台阶总数时t++

*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值