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

跳台阶扩展问题

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

class Solution {
public:
    int jumpFloorII(int number) {
        if(number == 1) return 1;
        if(number == 2) return 2;
        int n1 = 1, n2 = 2;
        int rt = 0;
        int sum = n1 + n2;
        for(int i=3; i <= number; ++i){
            rt = sum + 1;
            sum = rt + sum;
        }
        return rt;
    }
};

递推分析,但用for loop 完成。

f(n) = f(n-1) + f(n-2) + ... + f(1) + 1

第N次台阶,可能从前面的N-1次上直接跳上来,还可以一次从开始直接跳上来,所以应该是前面N-1次所有只和加上1.
其中f(1)=1, f(2)=2;
for 实现中,使用n1 n2 表示第一台阶,第二台阶的方法数作为初始值;sum表示前N-1次方法数之和。

全部评论

相关推荐

09-23 14:45
贵州大学 财务
勇敢求职牛牛:怎么9.2佬人手一个中信证券实习
点赞 评论 收藏
分享
09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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