题目:爬梯,每次爬一步或者两步,爬上n层一共有多少种方法。
解法:实在太简单了,考虑最后一次迈步,可以迈一步或者两步,两种方式不重合,所以f(n)=f(n-1)+f(n-2)。复杂度O(n)。
代码:
class Solution {
public:
int climbStairs(int n) {
int a=0,b=1,c;//c=a+b;
for(int i=0;i<n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
};