题解 | #跳台阶扩展问题#

跳台阶扩展问题

http://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387

升级版跳台阶
方法一:还可以使用找规律的方案,但此提的本意应该不是这么简单的(该方法属于取巧)

    int jumpFloorII(int number) {
        return pow(2,number - 1)
    }

方法二:从后往前跳,当i青蛙在第n个台阶时,共有f(n) = f(n-1) + f(n-2) + ....... + f(1)种方法;当青蛙在第 n-1 个台阶时,共有f(n-1) + f(n-2) + ....... + f(1)种方法,因此,该方式的状态转移方程(此处应用DP法的概念)如下:
f(n) = 2 f(n-1) ,当 n>1 时;
f(1) = 1, 当 n=1 时。

    int jumpFloorII(int number) {
        int ret = 0; //记录返回值
        int a = 1;  //初始值 f(1)
        if(number == 1) return 1;
        for(int i = 2; i < number + 1; ++i)
        {
            ret = 2 * a;
            a = ret;
        }
        return ret;
    }
全部评论

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务