下面是一个使用回溯算法解决 N 皇后问题的示例代码:
```python
def is_safe(board, row, col, n):
检查同一列上是否有皇后
for i in range(row):
if board[i][col]:
return False
检查左上到右下的对角线上是否有皇后
for i, j in zip(range(row, 1, 1), range(col, 1, 1)):
if board[i][j]:
return False
检查右上到左下的对角线上是否有皇后
for i, j in zip(range(row, 1, 1), range(col, n)):
if board[i][j]:
return False
return True
def solve_n_queens_util(board, row, n, result):
if row == n:
result.append(["".join(["Q" if cell else "." for cell in row]) for row in board])
return
for col in range(n):
if is_safe(board, row, col, n):
board[row][col] = 1
solve_n_queens_util(board, row 1, n, result)
board[row][col] = 0
def solve_n_queens(n):
board = [[0 for _ in range(n)] for _ in range(n)]
result = []
solve_n_queens_util(board, 0, n, result)
return result
n = 8 皇后数量
solutions = solve_n_queens(n)
for i, solution in enumerate(solutions):
print(f"Solution {i 1}:")

for row in solution:
print(row)
print()
```
在上面的代码中,is_safe 函数用于检查在给定位置放置皇后是否安全,solve_n_queens_util 函数使用递归实现 N 皇后问题的解决,solve_n_queens 函数是入口函数,用于初始化并返回所有解决方案。
你可以将以上代码复制粘贴到 Python 解释器中执行,将会输出 N 皇后问题的所有解决方案。
版权声明:本文为 “联成科技技术有限公司” 原创文章,转载请附上原文出处链接及本声明;