动态规划

2019-04-26  本文已影响0人  值得_e36c

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

上一篇下一篇

猜你喜欢

热点阅读