defis_safe(board, row, col):# 检查当前位置是否安全# 检查列上是否有皇后for i in range(row):
if board[i] == col or \
board[i] - i == col - row or \
board[i] + i == col + row:
returnFalsereturnTruedefsolve_queens(board, row):if row == 8: # 所有行都放置好了皇后,得到一个解
print_solution(board)
returnfor col in range(8):
if is_safe(board, row, col):
board[row] = col
solve_queens(board, row + 1)
board[row] = -1# 回溯,尝试其他列defprint_solution(board):for row in board:
line = ['Q'if col == row else'.'for col in range(8)]
print(' '.join(line))
print("\n")
# 初始化棋盘
chess_board = [-1] * 8# 调用函数解决八皇后问题
solve_queens(chess_board, 0)