劍指向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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章