1. 程式人生 > >【簡單算法】33.爬樓梯

【簡單算法】33.爬樓梯

公式 算法 color 不同 遞推公式 for AI 每次 ++

假設你正在爬樓梯。需要 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]; } };

【簡單算法】33.爬樓梯