美文网首页
荣耀算法题-青蛙跳

荣耀算法题-青蛙跳

作者: 老铁码农 | 来源:发表于2021-12-01 17:31 被阅读0次

青蛙跳

题目描述:

给出n阶台阶,每次只可以前进一步或者两步,中途有一次机会可以后退一步,这次机会也可以不使用,到达最后一个台阶一共有多少种走法

题目分析

最基础的青蛙跳是一组斐波那契数列, 即,: 如果不使用向后跳, 则按照斐波那契数列计算
其公式: f[i] = f[i-1] + f[i-2] 其中f[0]=1 f[1]=1
则有:
n=1; f[1]=1
n=2; f[2]=f[1]+f[0]=2
n=3; f[3]=f[2]+f[1]=3
...
n; f[n]=f[n-1] + f[n-2]
所以在这一思路下的代码为:

#include<iostream>
using namespace std;
/*利用 动态规划,这里只需要2个变量来维护。
*/
int jump_floor(int n){
    //边界条件判断
    int old1=1, old2=1;
    if (n == 1) return 1;
    int ans;
    for(int i=1; i<n; i++){
        ans = old1+old2;
        old2=old1;
        old1=ans;
    }
    return ans;
}


int main(){
    int number;
    cin >>number;
    cout<<jump_floor(number)<<endl;
    return 0;
}

样例:


在这里插入图片描述

针对青蛙跳的变式时,需要思考清楚逻辑,一般来说,这些改动都是有规律可循的*
针对本题,有如下思考:


在这里插入图片描述

给出代码如下:(需要注意, 代码中从0开始,途中i-1变为i)
其中:
f [ i ] × f [ n − i + 1 ] f[i] \times f[n-i+1]f[i]×f[n−i+1]

#include<iostream>
#include<vector>
using namespace std;
int jump_floor(int n){
    //边界条件判断
    vector<int> dp;
    for(int i=0; i<n; i++) dp.push_back(0);
    dp[0] = 1; 
    dp[1] = 2; 
    for(int i=2; i<n; i++){
        dp[i] = dp[i-1] + dp[i-2];
    }
    
    int ans;
    ans = dp[n-1]; //不使用回跳
    for(int i=0; i<n-1; i++){
        ans += (dp[i] * dp[n-i-1]);
    }
    return ans;
}


int main(){
    int number;
    cin >>number;
    cout<<jump_floor(number)<<endl;
    return 0;
}
在这里插入图片描述

相关文章

  • 荣耀算法题-青蛙跳

    青蛙跳 题目描述: 给出n阶台阶,每次只可以前进一步或者两步,中途有一次机会可以后退一步,这次机会也可以不使用,到...

  • 青蛙跳台阶问题算法分析与设计Readme

    学号:1753910 姓名:马思腾 简介 青蛙跳台阶问题是算法设计中较基础但十分重要的问题之一 问题题干如下: 青...

  • 优化算法笔记(十六)混合蛙跳算法

    1. 混合蛙跳算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)混合蛙跳算法(Shuffled Frog ...

  • 常见数据结构与算法题

    范畴:递归 1、青蛙跳台阶 青蛙跳台阶算法,每次可以跳1级或两级,请问有n级台阶,有多少种算法,递归和非递归如何写...

  • [算法练习] 青蛙跳

    题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同...

  • 荣耀算法面试题-送伞最小时间

    面试荣耀,一个算法题,很简单,当时竟然没给写出来。ε=(´ο`*)))唉,大意了,大意了,没有闪。 题目 部门聚餐...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • 算法 青蛙跳台阶

    用斐波那契数列解决。直接用递归会超时,所以用list将前面计算过的数值保存下来。这样后面需要计算时直接取值就可以了...

  • 撒欢

    青牛卧水眠,牧童骑背欢。 笛声吹柳绿,蛙跳荷叶前。

  • 剑指Offer算法题-青蛙跳台阶的问题

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法? 答题思路 如...

网友评论

      本文标题:荣耀算法题-青蛙跳

      本文链接:https://www.haomeiwen.com/subject/buosxrtx.html