LeetCode 70. Climbing Stairs

題目大意:有一個樓梯,一次可以走一步也可以走兩步。問從底部走到頂部有多少種不同的走法。
狀態是每個臺階的走法,用一個數組stepssteps維護,最後頂部臺階的走法就是答案。
那麼狀態轉移的方式是:某個臺階ii可以從前面一個臺階i1i - 1一步上來,也可以從前兩個臺階i2i - 2走兩步上來。那麼走到臺階ii的走法數量就是前面一個臺階i1i - 1的數量加上前兩個臺階i2i - 2的數量。即:
steps[i]=steps[i1]+steps[i2]steps[i] = steps[i - 1] + steps[i - 2]
完整代碼如下:

class Solution {
public:
    int climbStairs(int n) {
        const int maxn = 10000;
        int steps[maxn];
        memset(steps, 0, sizeof(steps));
        steps[0] = 1;
        steps[1] = 2;
        for(int i = 2; i < n; i++){
            steps[i] = steps[i - 1] + steps[i - 2];
        }
        return steps[n - 1];
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章