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;
    }
};

  

posted @ 2017-09-13 14:57  llauser  阅读(111)  评论(0)    收藏  举报