跳台阶

/*
一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
*/

首先我们考虑最简单的情况。

如果只有1级台阶,那么显然只一种跳法。

如果有2级台阶,那就有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。

f(n)=f(n-1)+f(n-2)

也就是斐波那契数列

#include <iostream>
using namespace std;
/*
一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
*/
// 实际上看着规律就是斐波那契数列
// 1,2,3,5,8
class Solution {
public:
    int jumpFloor(int number) {
       if (number <= 0)
            return 0;
       else if(number <= 3)
        return number;
       int first = 1, second = 2, third = 0;
       for (int i = 3; i <=number; i++)
       {
           third = first + second;
           first = second;
           second = third;
       }
       return third;
    }

};
int main(void)
{
    Solution s;
    cout <<s.jumpFloor(5);
    return 0;
}

 

posted @ 2020-03-10 16:01  Lucky&  阅读(176)  评论(0编辑  收藏  举报
//返回顶部开始
//返回顶部结束