#青蛙跳臺階
#一隻青蛙一次只能跳一級或者二級臺階,求若臺階爲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))