简单的动态规划问题。
思路:首先我们假设上n阶楼梯需要f(n)种方法。题目条件给出了两种上楼梯的方法,一种是上1阶,一种是上2阶。那么,如果我们选择先上了1阶,那么这个时候也就是说还需要f(n-1)种方法,同理上2阶就是需要f(n-2)种方法。那么也就是说,f(n)=f(n-1)+f(n-2)。其本质上我们可以不用再开数组用动态规划的做法做了,注意看,这里其实就是个斐波那契数列的问题而已。
那么我们的问题就转向了求斐波那契数列第n项的问题了,相信这个问题大家应该很熟悉才对,那么直接上代码了。
class Solution {
public:
int climbStairs(int n) {
int count=0;
int i;
int sum=0;
int a=0;
int b=1;
for(i=1;i<=n;i++){
sum=a+b;
a=b;
b=sum;
}
return sum;
}
};