题目
解题思路
考虑动态规划,dp[i]表示爬到第i层的方法种数,对于第i层,可以从第i-2层爬两个台阶到达,也可以从i-1层爬一个台阶到达,故dp[i]=dp[i-1]+dp[i-2],输出dp[n]即为答案
代码
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int climbStairs(int n) {
if (n == 1) return 1;
if (n == 2) return 2;
if (n >= 3) return climbStairs(n - 1) + climbStairs(n - 2);
return 0;
}
};
int main() {
int n;
cin >> n;
Solution solution;
int result = solution.climbStairs(n);
cout << result;
return 0;
}