class Solution { public: int climbStairs(int n) { vector<int> dp(n+1,0); if(n<2) return n; dp[0] = 0; dp[1] = 1; dp[2] = 2; // dp[i] 定义:到达当前i阶有dp[i]种不同方法 // 对于每个台阶i,只能有两种可能到达,要么i-2走两步到达,要么从i-1走一步到达。 for(int i = 3; i <= n; i++){ dp[i] = dp[i-1] + dp[i-2]; } return dp[n]; } };