7,跳台阶《剑指offer》
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
这是斐波那契数列问题的变体,f(n)表示跳上第n阶台阶的方法数,那么只能从n-1阶跳上去(+1),方法数为调到n-1阶的方法数也就是f(n-1);
或者从n-2阶跳上去(+2),方法数为跳到f(n-2)的方法数f(n-2),那么f(n)=f(n-1)+f(n-2)
代码:
class Solution {
public:
int jumpFloor(int n) {
int res[]={0,1,2};
if(n<3)return res[n];
int fibOne=2;
int fibTwo=1;
int fibN=0;
for(int i=3;i<=n;i++){
fibN=fibOne+fibTwo;
fibTwo=fibOne;
fibOne=fibN;
}
return fibN;
}
};

浙公网安备 33010602011771号