zoukankan      html  css  js  c++  java
  • 微软算法100题27 跳台阶问题

    27.跳台阶问题
    题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。
    求总共有多少总跳法,并分析算法的时间复杂度

    思路:通过数学归纳法 

    n=1 1

    n=2 2

    n=3 3

    n=4 5

    n=5 8

    可知n>=3时 f(n)=f(n-1)+f(n-2) 是一个斐波那契数列, 该问题的时间复杂度也就是求斐波那契数列第N项的时间复杂度

    n=3时需要计算2次, n=4时需要计算3次,n=5时需要计算5次,求斐波那契第N项的时间复杂度也是一个斐波那契数列,即O(n)=O(fib(n))

     1 package com.rui.microsoft;
     2 
     3 public class Test27_JumpStairs {
     4 
     5     public static void main(String[] args) {
     6         int total = jump(6);
     7         System.out.println(total);
     8     }
     9     
    10     public static int jump(int n){
    11         if(n <= 0) return 0;
    12         else if (n == 1) return 1;
    13         else if (n == 2) return 2;
    14         else{
    15             return jump(n-1) + jump(n-2);
    16         }
    17     }
    18 }
  • 相关阅读:
    allocator类
    智能指针shared_ptr
    字面值常量类
    转换构造函数
    委托构造函数
    访问说明符&封装
    const成员函数
    函数指针
    constexper和常量表达式
    函数返回数组指针
  • 原文地址:https://www.cnblogs.com/aalex/p/4911254.html
Copyright © 2011-2022 走看看