zoukankan      html  css  js  c++  java
  • (原)剑指offer变态跳台阶

    变态跳台阶
    • 时间限制:1秒空间限制:32768K

    题目描述

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     
    分析一下明天是个斐波那契数列,我们一步一步退出其通项公式。
     
    设台阶数为n, 总跳法为jumps
     
    n          jumps
    1    1
    2    2
    3    4
    4    8
    5    16
     
    现在猜测其通项公式为 fbonicc(n) = 2 * fbonicc(n - 1)
     
    列出4的全部跳法            5的全部跳法
    1111                  1111 (1)
    2  11                  2 11  (1)
    1  2 1                   1 2 1 (1)
    1  1 2                   1  1 2(1)
    2     2                   2 2    (1)
    1     3                   1 3    (1)
    3  1                   3  1 (1)
    4                     4   (1)
                         111(1+1)
                         2 1 (1+1)
                         1 2 (1+1)
                         1 1  (2 + 1)
                         2 (2+1)
                         1 (3+1)
                         3 (1+1)
                         (4+1)
     
    so 这次应该可以看出规律了!也就是fbonicc(n) = 2 * fbonicc(n - 1)
     
    c++代码实现
    递归实现
    class Solution {
    public:
      int jumpFloorII(int number) {
        if (number == 1) return 1;
            else return 2 * jumpFloorII(number - 1);
      }
    };
    
    非递归实现
    class Solution {
    public:
      int jumpFloorII(int number) {
            long long fibonicc = 1;
            for (int i = 2;i <= number;i++)
                 fibonicc *= 2;
            return fibonicc;
      }
    };            
                         
     
     
     
  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/code-changeworld/p/4531056.html
Copyright © 2011-2022 走看看