Climbing Stairs II

Climbing Stairs II.png

解題思路 :

Back Track 可以解決但是效率不夠 同樣還是使用 DP 基本跟 Climbing Stairs I 相同 先預設好 step[0] = 1 ( 題目要求 n = 0 return 1) step[1] = 1, step[2] = 2, step[3] = 4 接著就可以從 i = 4 開始 for loop 到 i <= n 關鍵就只有一句:

steps[i] = steps[i-1] + steps[i-2] + steps[i-3];

回傳最後一個值即可

C++ code :

<pre><code>
class Solution {

public:

/**
 * @param n an integer
 * @return an integer
 */
int climbStairs2(int n) {
    // Write your code here
    vector<int> steps(n + 1);
    steps[0] = 1;
    steps[1] = 1;
    steps[2] = 2;
    steps[3] = 4;
    for(int i = 4; i <= n; i++)
    {
        steps[i] = steps[i-1] + steps[i-2] + steps[i-3];
    }
    return steps[n];
}

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容