輸入說明:
輸入兩個整數 x、y (0<=x、y<=32)。
輸出說明:
請輸出從 (0,0) 到 (x,y) 有幾種走法。
範例輸入:
輸入1: 2 3 輸入2: 8 10
範例輸出 :
輸出1: 10 輸出2: 43758
"""
給定一個m*n的格子或棋盤,問從左下角走到右上角的走法總數(每次只能向右或向上移動一個方格邊長的距離)
解答:
把棋盤看做二維座標,
設f(m,n)代表從座標(0,0)到座標(m,n)的移動方法,則
f(m,n)=f(m-1,n)+f(m,n-1)
初始為f(0,0)=0,f(0,1)=1,f(1,0)=1
"""
def blockmatrix( m , n):
if(m == 0 and n == 0):
return 0
elif(m == 1 and n == 0):
return 1
elif (m == 0 and n == 1):
return 1
elif (m == 0):
return blockmatrix(m,n-1)
elif (n == 0):
return blockmatrix(m-1,n)
else:
return blockmatrix(m,n-1)+blockmatrix(m-1,n)
print("座標(0,0)到座標(m,n),請輸入 m,n 並以逗號 分開 : ")
m, n = map(int,input().split(','))
print("(0,0)到座標(m,n)的移動方法,共有", blockmatrix(m,n),"種")
====================== RESTART: F:/Python_APSC/b025.py ======================
座標(0,0)到座標(m,n),請輸入 m,n 並以逗號 分開 :
3,4
(0,0)到座標(m,n)的移動方法,共有 35 種
>>>
====================== RESTART: F:/Python_APSC/b025.py ======================
座標(0,0)到座標(m,n),請輸入 m,n 並以逗號 分開 :
8,10
(0,0)到座標(m,n)的移動方法,共有 43758 種
>>>
沒有留言:
張貼留言