动态规划

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

public class Solution {
    public int JumpFloor(int target) {
        
        return jump(target);
    }
    
    public int jump(int n){
        if(n == 1){
            return 1;
        }
        if(n == 2){
            return 2;
        }
        return jump(n-1)+jump(n-2);
    }
}

2.一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

public class Solution {
    public int JumpFloorII(int target) {
        return jump(target);
    }
    
    public int jump(int n){
        if(n == 1 || n == 0){
            return 1;
        }
        int total = 0;
        for(int i=1;i<=n;i++){
            total += jump(n-i);
        }
        return total;
    }
}
更简便的方法
public class Solution {
    public int JumpFloorII(int target) {
        int [] a = new int[target + 1];
        a[0] = 1;
        a[1] = 1;
        for(int i=2;i<=target;i++){
            a[i] = jump(i,a);
        }
        return a[target];
    }
    
    public int jump(int n,int []a){
        int total = 0;
        for(int i=0;i<n;i++){
            total = total + a[i];
        }
        return total;
    }
}

动态规划参考博客:
https://blog.csdn.net/u013309870/article/details/75193592

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 斐波那契数列,爬楼梯:有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法f(n)=f(n-1)+f(n...
    mrjunwang阅读 3,106评论 0 0
  • 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳...
    longxingxiu阅读 3,222评论 0 0
  • 动态规划是一种算法套路,通常用来求一些最优解什么的,它的最精髓的地方个人认为就是它是反过来推理的,有一些题目按照脑...
    虫儿飞ZLEI阅读 1,684评论 0 0
  • 爬楼梯问题 问题描述:现在总共有10层台阶,一只青蛙一次只能跳一阶或两阶。问总共有多少种跳法?   分析一波: 青...
    JYGod丶阅读 4,243评论 0 5
  • 我很想明白为什么微服务架构会选择SpringCloud,为啥就是它? 在网上逛了一圈之后总结下: 一、Spring...
    书中乌鸦不是鸟阅读 5,107评论 0 3

友情链接更多精彩内容