题目:


n

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Note: Given n

思路:这道题目本质上是个动态规划的问题,虽然也可以用递归的方法做,但是时间复杂度太高,那么用动态规划就需要建立状态转移方程:X(i) = X(i-1) + X(i-2);   

每次有两种选择,两种选择之后又是各有两种选择,如下图所示:

70. Climbing Stairs_动态规划

代码:

//简单的动态规划问题
class Solution {
public:
int climbStairs(int n) {
vector<int> res(n+1);
res[0] = 1;
res[1] = 1;
for(int i =2;i<=n;i++)
{
res[i] = res[i-1] + res[i-2];
}
return res[n];


}
};