当 $n=2$ 时,有两种爬法
1. 1 阶 + 1 阶
2. 2 阶
$n=3$时,有三种爬法
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
可以跳一阶或两阶,也就是说到当前阶梯可以从当前阶下一阶或者下两阶跳上来,爬法就是到下一阶的爬法加上下两阶的爬法之和
以第三阶为例,从第一阶跳两阶或者从第二阶跳一阶都可到达,已知第二阶有两种爬法,第一阶则为一种爬法,相加即为三种
依此即可求到第 n 阶的爬法
```cpp
class Solution
{
public:
int climbStairs(int n)
{
vector<int> dp(n + 1, 0);
dp[0] = 1;
dp[1] = 1;
for (auto i = 2; i <= n; ++i)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
};
```