Python算法之骑士巡逻

Python算法之骑士巡逻

问题:骑士巡逻,是图论上的一个计算哈密尔顿轨的数学问题。具体内容:将一个国际棋盘的骑士放在棋盘上,设计一个方案能使它走遍棋盘上的每一个格子。

代码:

size = 5
total = 0


def print_board(board):
    for row in board:
        for col in row:
            print(str(col).center(4), end=' ')
        print()


def patrol(board, row, col, step=1):
    if row >= 0 and row < size and col >= 0 and col < size and board[row][col] == 0:
        board[row][col] = step
        if step == size * size:
            global total
            total += 1
            print(f'第{total}种走法:')
            print_board(board)
        patrol(board, row - 2, col - 1, step + 1)
        patrol(board, row - 1, col - 2, step + 1)
        patrol(board, row + 1, col - 2, step + 1)
        patrol(board, row + 2, col - 1, step + 1)
        patrol(board, row + 2, col + 1, step + 1)
        patrol(board, row + 1, col + 2, step + 1)
        patrol(board, row - 1, col + 2, step + 1)
        patrol(board, row - 2, col + 1, step + 1)
        board[row][col]=0

    
if __name__ == '__main__':
    board = [[0] * size for _ in range(size)]
    patrol(board, size - 1, size - 1)
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章