美文网首页
动态规划

动态规划

作者: 值得_e36c | 来源:发表于2019-04-26 16:44 被阅读0次

    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

    相关文章

      网友评论

          本文标题:动态规划

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