lintcode 272. 爬楼梯 II

一个小孩爬一个 n 层台阶的楼梯。他可以每次跳 1 步, 2 步 或者 3 步。实现一个方法来统计总共有多少种不同的方式爬到最顶层的台阶。

样例
Example 1:

Input: 3
Output: 4
Explanation: 1 + 1 + 1 = 2 + 1 = 1 + 2 = 3 = 3 , there are 4 ways.
Example 2:

Input: 4
Output: 7
Explanation: 1 + 1 + 1 + 1 = 1 + 1 + 2 = 1 + 2 + 1 = 2 + 1 + 1 = 2 + 2 = 1 + 3 = 3 + 1 = 4 , there are 7 ways.
说明
对于n=0,我们认为答案是1。

class Solution {
public:
    /**
     * @param n: An integer
     * @return: An Integer
     */
    int climbStairs2(int n) {
        // write your code here
        std::vector result ;
        result.push_back(1);
        result.push_back(1);
        result.push_back(2);
        if(n>=3)
        {
            for ( int i=3; i <= n; i++) {
                /* code */
            result.push_back(result[i-1]+result[i-2]+result[i-3]);
            }    
            return result[n];
        }
        return result[n];
    }
};```

你可能感兴趣的:(lintcode)