动态规划:
上到第n层的前一步,不是垮了一步,就是垮了两步。只需计算走到前一步所在层的方法。
即
f
(
n
)
=
f
(
n
−
1
)
+
f
(
n
−
2
)
f(n) = f(n-1)+f(n-2)
f(n)=f(n−1)+f(n−2)
c++
class Solution {
public:
int climbStairs(int n) {
vector<int> dp(n+3);
dp[1] = 1;
dp[2] = 2;
for(int i=3;i<=n;i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
};
python
class Solution:
def climbStairs(self, n: int) -> int:
dp = [0 for _ in range(n+3)] ## 创建列表
dp[1] = 1
dp[2] = 2
for i in range(3,n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]