アルゴリズムの最適化に行き詰まっています。
目標は、チェス盤の点 A から点 B に移動するために使用できる方法の数を見つけることです。
- A は左下の正方形です。
- B は右上の正方形です。
- ピースは、各ターンに 1 つだけ上または 1 つの右に移動できます。
ここにダミーの解決策があります:
# -*- conding: utf-8 -*-
import time
def solution(n, m, x, y):
ret = 0
if x < n-1:
ret += solution(n, m, x+1, y)
if y < m-1:
ret += solution(n, m, x, y+1)
if x == n-1 and y == m-1:
ret = 1
return ret
def wrapper(n, m):
start = time.time()
reponse = solution(n, m, 0, 0)
stop = time.time()
print "Response: %dx%d = %d\nTime : %f\n" % (n, m, reponse, stop-start)
if __name__ == "__main__":
for i in range(10):
wrapper(i+1,i+1)
#wrapper(7,7)
#wrapper(10,10)
#wrapper(100,100)
#wrapper(1000,1000)
#wrapper(10000,10000) <- way too slow
私は小さなチェス盤を使用していますが、問題なく動作し、結果は適切です。しかし、私の目標は、10000x10000 ボードのソリューションを見つけることです。
アイデアはありますか?