zoukankan      html  css  js  c++  java
  • 剑指offer09-变态跳台阶

    题目描述

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    示例

    输入:3

    返回值:4

    知识点回顾

    跳台阶问题

    一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递归公式。

    F(0)= 0
    F(1)= 1
    F(2)= 2
    F(n)= F(n-1)+ F(n-2)(n > 2)

    变态跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    相比上一个跳台阶,这次可以从任意台阶跳上第n级台阶,也可以直接跳上第n级。因此其递归公式为各个台阶之和再加上直接跳上去的一种情况。

    F(0)= 0
    F(1)= 1
    F(2)= 2
    F(n)= F(n-1)+ F(n-2)+ … + F(2)+ F(1)+ 1

    因为F(n-1) = F(n-2) + … + F(2) + F(1) + 1,所以F(n) = 2 * F(n-1),等比数列F(n) = 2^(n-1)

    代码

    # -*- coding:utf-8 -*-
    class Solution:
        def jumpFloorII(self, number):
            # write code here
            return pow(2,number-1)
  • 相关阅读:
    Oracle 多表查询优化
    FZU 2150 Fire Game
    HDU 1058 Humble Numbers
    UVA 11624 Fire!
    POJ 1321 棋盘问题
    线性表的基本操作
    POJ 3414 Pots(广搜输出路径)
    HDU 1495 非常可乐
    POJ 1847 Tram
    POJ 3159 Candies(查分约束)
  • 原文地址:https://www.cnblogs.com/foolangirl/p/13900985.html
Copyright © 2011-2022 走看看