八皇后问题python回溯算法完整代码
时间: 2023-10-12 20:13:35 浏览: 221
以下是八皇后问题的 Python 回溯算法完整代码:
```python
def is_safe(board, row, col, n):
# 检查列是否安全
for i in range(row):
if board[i][col] == 1:
return False
# 检查左上方是否安全
i = row
j = col
while i >= 0 and j >= 0:
if board[i][j] == 1:
return False
i -= 1
j -= 1
# 检查右上方是否安全
i = row
j = col
while i >= 0 and j < n:
if board[i][j] == 1:
return False
i -= 1
j += 1
return True
def solve(board, row, n):
# 找到一个解
if row == n:
for i in range(n):
for j in range(n):
print(board[i][j], end=' ')
print()
print()
return True
res = False
for col in range(n):
if is_safe(board, row, col, n):
board[row][col] = 1
res = solve(board, row + 1, n) or res
board[row][col] = 0
return res
def eight_queens(n):
board = [[0] * n for i in range(n)]
solve(board, 0, n)
# 测试
eight_queens(8)
```
这个程序会输出所有的解,每个解是一个 $n\times n$ 的矩阵,其中 $1$ 表示这个位置上有皇后,$0$ 表示没有。
阅读全文