【簡單算法】33.爬樓梯


假設你正在爬樓梯。需要 n 步你才能到達樓頂。

每次你可以爬 12 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是一個正整數。

示例 1:

輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1.  1 步 + 12.  2 步
示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1.  1 步 + 1 步 + 12.  1 步 + 23.  2 步 + 1

解題思路:

利用遞推公式dp[i] = dp[i-1] + dp[i-2].我們可以知道最后一步可以上一個台階或者上兩個台階。

代碼:

class Solution {
public:
    int climbStairs(int n) {
        if(n == 1){
            return 1;
        }
        
        if(n == 2){
            return 2;
        }
        
        vector<int> dp(n,0);
        dp[0] = 1;
        dp[1] = 2;
        
        for(int i = 2; i < n; ++i){
            dp[i] = dp[i-1] + dp[i-2];
        }
        
        return dp[n-1];
    }
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM