变态跳台阶

题目描述

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

分析:
DP(n)代表跳上第n级台阶的次数。
DP(0) = 1
DP(1) = DP(1 - 1)
DP(2) = DP(2 - 1) + DP(2 - 2)
DP(3) = DP(3 - 1) + DP(3 - 2) + DP(3 - 3) // 3 - 1代表最后一次跳了1级台阶,3 - 2代表最后一次跳了2级台阶......
......
DP(n) = DP(n-1) + DP(n - 2) + DP(n - n)
DP(n-1) = DP(n - 2) + DP(n - 3) + DP(n - n)
上面两式相减,得:
DP(n) = 2 * DP(n - 1)
public class Solution {
    public int JumpFloorII(int target) {
        if (target == 1){
            return target;
        }
        int f1 = 1;
        int f2 = 2 * f1;
        for(int i = 3; i <= target; i++) {
            f2 += 2 * f1;
            f1 = f2 / 2;
        }
        return f2;
    }
}
全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务