剑指offer08

剑指offer08:跳台阶

题目描述

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

解法一:基于规律的方法

class Solution {
public:
    int jumpFloor(int number) {
        int first = 1, second = 1, flag = 0;
        if (number == 1)
            return 1;
        else if (number == 2)
            return 2;
        else
        {
            for (int i = 1; i<number; i++)
            {
                flag = first + second;
                first = second;
                second = flag;
            }
        }
        return flag;
    }
};

解法二:基于vector的方法

class Solution2 {
public:
    int jumpFloor(int number) {
        if (number == 1)
            return 1;
        else if (number == 2)
            return 2;
        vector<int> nums(number + 1, 1);
        nums[0] = 1;
        nums[1] = 1;
        for (int i = 2; i <= number; i++)
        {
            nums[i] = nums[i - 1] + nums[i - 2];
        }
        return nums[number];
    }
};

main函数

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int num;
    cout << "请输入台阶数n:" << endl;
    cin >> num;
    Solution answer;

    cout << "一共有 " << answer.jumpFloor(num) << "种跳法!" << endl;

    system("pause");
    return 0;
}

   转载规则


《剑指offer08》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
剑指offer12 剑指offer12
剑指offer12:数值的整数次方 题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解法一:分类讨论class Solut
2020-05-07
下一篇 
剑指offer09 剑指offer09
剑指offer09:变态跳台阶 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。 求该青蛙跳上一个n级的台阶总共有多少种跳法。 解法一:基于递归的方法class Solution { public: in
2020-05-07
  目录