算法8:青蛙跳臺階有幾種方式

#青蛙跳臺階
#一隻青蛙一次只能跳一級或者二級臺階,求若臺階爲n,青蛙有幾種跳法?
#這個問題和矩形覆蓋問題類似,也是由兩種情況開始。
#矩形覆蓋是:要麼你先用2*1的矩形覆蓋,要麼你用1*2的矩形覆蓋。
#然後剩餘的問題又是一個大矩形的覆蓋問題。因爲無論你選擇哪種方式,最終
#我們又回到了一個類似原來的出發點,周而復始。
#因此,在這裏,青蛙也有兩種方式:
#1、先跳一個臺階,剩餘n-1個臺階;
#2、先跳兩個臺階,剩下n-2級臺階;
#這裏的不論你剩餘n-1個臺階,還是n-2個臺階,你都需要重新開始跳。
#從此時開始,青蛙又得思考它是跳一個臺階呢,還是跳兩個臺階。
#所以它好像沒有跳過一樣。
#臺階特殊情況:1、n = 1,青蛙只有一種情況,那就是跳一個臺階(不可能跳兩個臺階,跳兩個的話就跳鍋裏了)
#2、n = 2,此時,青蛙有兩種情況,一個臺階一個臺階跳,是一種情況;另一種情況就是,
#這隻青蛙挺豪爽,一次就蹦了兩個臺階(蛙中豪傑!)。


def FrogJump(n):
    if n <= 2:
        return n
    nJumpOne = 1
    nJumpTwo = 2
    nKindsNum = 0
    for i in range(3,n+1):
        nKindsNum = nJumpOne + nJumpTwo
        nJumpOne = nJumpTwo
        nJumpTwo = nKindsNum
    return nKindsNum


#這裏假設臺階分別有n = 1,2,4個三種情況
print("臺階數1:")
print(FrogJump(1))
print("臺階數2:")
print(FrogJump(2))
print("臺階數4:")
print(FrogJump(4))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章