example04.py 957 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """
  2. 骑士巡逻
  3. """
  4. import sys
  5. SIZE = 8
  6. def display(board):
  7. """显示棋盘"""
  8. for row in board:
  9. for col in row:
  10. print(f'{col}'.rjust(2, '0'), end=' ')
  11. print()
  12. def patrol(board, i=0, j=0, step=1):
  13. """巡逻"""
  14. if 0 <= i < SIZE and 0 <= j < SIZE and board[i][j] == 0:
  15. board[i][j] = step
  16. if step == SIZE * SIZE:
  17. display(board)
  18. sys.exit(0)
  19. patrol(board, i + 1, j + 2, step + 1)
  20. patrol(board, i + 2, j + 1, step + 1)
  21. patrol(board, i + 2, j - 1, step + 1)
  22. patrol(board, i + 1, j - 2, step + 1)
  23. patrol(board, i - 1, j - 2, step + 1)
  24. patrol(board, i - 2, j - 1, step + 1)
  25. patrol(board, i - 2, j + 1, step + 1)
  26. patrol(board, i - 1, j + 2, step + 1)
  27. board[i][j] = 0
  28. def main():
  29. """主函数"""
  30. board = [[0] * SIZE for _ in range(SIZE)]
  31. patrol(board)
  32. if __name__ == '__main__':
  33. main()