当 $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]; } }; ```