剑指向Offer-Python版 -- 变态跳台阶

题目描述

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

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here

思路

罗列出所有部分结果, 总结规律

假设有一个4级台阶(t),开始列举所有结果
台阶1 : 直接跳一阶
台阶2 : 直接跳法 + 先跳到 一阶
台阶3 : 直接跳法 + 先到一阶再到三阶 + 先到二阶再到三阶
台阶4 : 直接跳法 + 先到一阶再到四阶 + 先到二阶再到四阶 + 先到三阶再到四阶
。。。
台阶n : 直接跳法 + 先到一阶再到n阶 + 。。。。。 先到n-1 阶再到n阶

t1 = 1
t2 = 1 + t
t3 = 1 + t1 + t 2
t4 = (1 + t1 + t 2) + t 3 = t3 + t3
t5 = (1 + t 1 + t 2 + t 3) + t4 = t4 + t4

t n = 1 + t1 + t2+ … t n-1 = t n-1 + t n-1

class Solution:
    def jumpFloorII(self, number):
        # write code here
        if number <= 0:
            return 0

        if number <= 2:
            return number

        t1 = 1
        t2 = 2
        target = t1 + t2 + 1 # t3的结果
        for i in range(3,number):
            target += target 
        return target
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章