每日一道算法题 跳台阶

题目

跳台阶_牛客题霸_牛客网 (nowcoder.com)

青蛙跳1级台阶 有1种跳法,f(1)=1。

青蛙跳2级台阶 有2种跳法,1+1或2(先跳1级,再跳一级,或者直接跳两级),f(2)=2。

青蛙跳3级台阶 有3种跳法,1+1+1或2+1或1+2,f(3)=3

青蛙跳4级台阶 有5种跳法,1+1+1+1或1+2+1或2+1+1或1+1+2或2+2,f(4)=5

……

 规律为f(n)=f(n-1)+f(n-2)

如斐波拉契数列

0,1,1,2,3,5,8……

c语言

int jumpFloor(int step)
{
    // 0,1,1,2,3,5
    int front=0;
    int next=1;
    int tmp=0;
    for(int s=0;s<step;s++)
    {
        tmp=front+next;
        front=next;
        next=tmp; 
    }
    return next;

}

c++

int jumpFloor(int step)
{
    //f(n)=f(n-1)+f(n-2)

    if(step==0) return 1;
    if(step==1) return 1;
    
    return jumpFloor(step-1)+jumpFloor(step-2);

}

慢,会超时,需要记忆化搜索。

int f[40]={0};
int jumpFloor(int step)
{
    //f(n)=f(n-1)+f(n-2)

    if(step==0) return 1;
    if(step==1) return 1;
    if(f[step]>0) return f[step];
    return f[step]=jumpFloor(step-1)+jumpFloor(step-2);

}

python

def jumpFloor(step):
    front=0
    next=1
    for _ in range(step):
        front,next=next,front+next
    return next

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值