(3)编写一个程序,求解皇后问题:在nXn的方格棋盘上,放置n个皇后,要求每 个皇后不同行、不同列、不同左右对角线
时间: 2024-12-15 20:22:14 浏览: 15
nrainhas:遗传算法在Java中解决N皇后问题的应用
皇后问题是一个经典的回溯算法问题,目标是在一个 n×n 的棋盘上放置 n 个皇后,保证每个皇后不会互相攻击,即不在同一条横线上、纵线上,以及两条对角线上。以下是 Python 编程的一个简单解决方案:
```python
def solve_n_queens(n):
def is_safe(row, col):
# 检查列、左对角线和右对角线是否已经有皇后
for i in range(col):
if board[row][i] == 1 or \
board[row - i][col - i] == 1 or \
board[row + i][col - i] == 1:
return False
return True
def place_queen(row):
if row == n:
solutions.append(board.copy())
else:
for col in range(n):
if is_safe(row, col):
board[row][col] = 1
place_queen(row + 1)
board[row][col] = 0
board = [[0]*n for _ in range(n)]
solutions = []
place_queen(0)
return solutions
# 示例:解决4皇后问题
n = 4
solutions = solve_n_queens(n)
print("所有可能的解决方案:")
for solution in solutions:
print(solution)
阅读全文