题目描述:假设你正在爬楼梯,需要n阶才能到达楼顶。每次可以爬1或者2阶,请问有多少种爬法?
题目解析:
显然这是一个动态规划的问题,关键在于如何找到状态转移方程。
class Solution{
public:
int climbStairs(int n){
if(n==1) return 1;
vector<int> s(n+1,-1); //初始化s[n+1],并且数值全为-1
s[1]=1;
s[2]=2;
for(int i=3;i<=n;i++)
{
s[i]=s[i-1]+s[i-2]; //当前数目等于前一步和前两步路径数目之和
}
return s[n];
}
};