写一个n皇后的python代码
时间: 2024-11-15 10:23:10 浏览: 9
在Python中,"n皇后"问题是经典的回溯算法问题,目标是在一个n×n的棋盘上放置n个皇后,使得任意两个皇后都不在同一行、同一列,也不在同一对角线上。以下是使用递归实现的一个简单版本的n皇后问题的Python代码:
```python
def solve_n_queens(n):
def is_valid(row, col):
# 检查行、列和左上到右下的对角线是否有冲突
for i in range(row):
if board[i] == col or \
board[i] - i == col - row or \
board[i] + i == col + row:
return False
return True
def place_queen(row):
if row >= n:
result.append(board.copy())
else:
for col in range(n):
if is_valid(row, col):
board[row] = col
place_queen(row + 1)
# 初始化解列表和空棋盘
result = []
board = [-1] * n
place_queen(0)
return result
# 示例:解决4皇后问题
n = 4
queens = solve_n_queens(n)
print(f"解决方案数:{len(queens)}")
for sol in queens:
print("皇后位置:", " ".join(map(str, sol)))
阅读全文