题解 | #跳台阶#

跳台阶

http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

递归的解法:

public class Solution {
    public int jumpFloor(int target) {
        if (target==1|target==0) return 1;
        return jumpFloor(target-1)+jumpFloor(target-2);
    }
}

动态规划的解法:

public class Solution {
    public int jumpFloor(int target) {
        int [] dp = new int[50];
        dp[0]=1; dp[1]=1;
        for(int i=2;i<=target;i++) dp[i]=dp[i-1]+dp[i-2]; //状态转移方程
        return dp[target];
    }
}

动态规划的优化版

public class Solution {
    public int jumpFloor(int target) {
        int a=1,b=1;
        for(int i=2;i<=target;i++){
            int c=a+b;
            a=b;
            b=c;
        }
        return b;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务