八皇后问题Python输出图像
时间: 2024-12-09 12:02:21 浏览: 10
在Python中,解决八皇后问题并生成可视化结果,通常会使用`numpy`库创建一个二维数组表示棋盘,然后使用`matplotlib`库来绘制。以下是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
def is_safe(board, row, col):
# 检查行、列和主对角线是否有皇后
for i in range(row):
if board[i] == col or \
board[row-i] == col or \
board[col+i] == row or \
board[col-i] == row:
return False
return True
def solve_n_queens(n, board=None):
if board is None:
board = [-1]*n
if n == 0:
print(" ".join(map(str, board)))
return True
for col in range(n):
if is_safe(board, n-1, col):
board[n-1] = col
if solve_n_queens(n-1, board):
return True
else:
board[n-1] = -1 # 回溯
return False
# 解决八皇后问题
if solve_n_queens(8):
# 创建棋盘图像
fig, ax = plt.subplots()
ax.set_title('8 Queens Problem Solution')
ax.set_aspect('equal', adjustable='box')
plt.xlim([-0.5, 7.5])
plt.ylim([-0.5, 7.5])
queen_positions = np.argwhere(board != -1)
for pos in queen_positions:
ax.plot(pos[1], pos[0], 'ro')
plt.show()
```
这段代码首先实现了八皇后问题的解决,然后利用`matplotlib`画出棋盘及其解决方案,红点表示皇后的位置。
阅读全文