很经典的DP。设dp[i]为走到第i级台阶的总方案数,那么显然可以得到状态转移方程:
dp[i]=dp[i-1]+dp[i-2]。因为每一步能走一级或者两级台阶。
初始化dp[1]=1,dp[2]=2,然后跑循环就行了。
class Solution { public: int climbStairs(int n) { int dp[100]; dp[1] = 1; dp[2] = 2; for(int i = 3; i <= n; i++) dp[i] = dp[i-1] + dp[i-2]; return dp[n]; } };
评论
还没有任何评论,你来说两句吧!