【簡單算法】33.爬樓梯
阿新 • • 發佈:2018-05-04
公式 算法 color 不同 遞推公式 for AI 每次 ++
假設你正在爬樓梯。需要 n 步你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 註意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 步 + 1 步 2. 2 步 示例 2: 輸入: 3 輸出: 3 解釋: 有三種方法可以爬到樓頂。 1. 1 步 + 1 步 + 1 步 2. 1 步 + 2 步 3. 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]; } };
【簡單算法】33.爬樓梯