Climbing Stairs II

Climbing Stairs II.png

解題思路 :

Back Track 可以解決但是效率不夠 同樣還是使用 DP 基本跟 Climbing Stairs I 相同 先預(yù)設(shè)好 step[0] = 1 ( 題目要求 n = 0 return 1) step[1] = 1, step[2] = 2, step[3] = 4 接著就可以從 i = 4 開始 for loop 到 i <= n 關(guā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];
}

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容