剑指Offer——变态跳台阶

题目:

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

题解:

class Solution {
public:
    int jumpFloorII(int number) {
        vector<int> dp(number+1, 0);
        dp[0] = 1;
        dp[1] = 1;
        dp[2] = 2;
        for(int i=3; i <= number; ++i) {
            int j;
            for(j = i-1; j >= 0; --j) {
                dp[i] += dp[j];
            }
        }
        return dp[number];
    }
};

还是DP,只是因为和之前的跳台阶不一样,能够跳任意数量个台阶,所以要加上前面所有的情况。

posted @ 2020-04-07 21:34  夜溅樱  阅读(231)  评论(0编辑  收藏  举报