Leetcode 70 Climbing Stairs 爬樓梯的方法(動態規劃)
阿新 • • 發佈:2019-01-29
題目描述:
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
Example 1:
Input: 2 Output: 2 Explanation: There are two ways to climb to the top. 1. 1 step + 1 step 2. 2 steps
Example 2:
Input: 3 Output: 3 Explanation: There are three ways to climb to the top. 1. 1 step + 1 step + 1 step 2. 1 step + 2 steps 3. 2 steps + 1 step
從樓梯最下面開始,每次可以爬1級或者2級,求爬到最上面的方法數
思路:
1.典型的動態規劃問題。輔助陣列儲存到這一級的方法數,顯然ans[0]=ans[1]=1,之後每一級都有從下一級爬上來和下兩極爬上來兩種做法,即dp[i]=dp[i-1]+dp[i-2]
程式碼:
class Solution { public: int climbStairs(int n) { int ans[100]; ans[0]=ans[1]=1; for(int i=2;i<=n;i++) ans[i]=ans[i-1]+ans[i-2]; return ans[n]; } };