色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

python 馬踏棋盤

榮姿康1年前9瀏覽0評論

馬踏棋盤是一道非常經典的算法問題,其解法可以使用DFS(深度優先搜索)和分治思想來解決。這里我們介紹一種使用Python語言來實現馬踏棋盤的方法。

#定義棋盤的大小及馬的起始位置
SIZE = 8
START = (0, 0)
#定義馬每一步的移動方式
MOVES = ((2, 1), (1, 2), (-1, 2), (-2, 1),
(-2, -1), (-1, -2), (1, -2), (2, -1))
#檢查某個點是否在棋盤內
def is_valid(x, y):
return 0<= x< SIZE and 0<= y< SIZE
#檢查某個點是否已經被訪問過
def is_visited(visited, x, y):
return visited[x][y]
#判斷當前的步數是否已經達到最大值
def is_complete(step):
return step == SIZE * SIZE
#遞歸函數,用于嘗試所有可能的移動方式
def dfs(board, visited, x, y, step):
board[x][y] = step
visited[x][y] = True
if is_complete(step):
return True
for mx, my in MOVES:
nx, ny = x + mx, y + my
if is_valid(nx, ny) and not is_visited(visited, nx, ny):
if dfs(board, visited, nx, ny, step + 1):
return True
board[x][y] = 0
visited[x][y] = False
return False
#馬踏棋盤主函數
def knight_tour():
board = [[0] * SIZE for _ in range(SIZE)]
visited = [[False] * SIZE for _ in range(SIZE)]
dfs(board, visited, START[0], START[1], 1)
for row in board:
print(row)
#調用主函數
knight_tour()

以上代碼實現了一個完整的馬踏棋盤算法,輸出結果是一個8x8的棋盤,每個數字代表馬在這個位置上所在的步數。整個算法的時間復雜度為O(k^(N*N)),其中k為每個格子的可選擇方向數,N為棋盤的大小。雖然算法效率不高,但是解決這種NP問題的方法本身就有困難,因此這個算法還是非常有意義的。