写一个python程序输出Eight Queen游戏一种可能解法
时间: 2024-12-04 21:23:07 浏览: 12
八皇后问题是经典的回溯算法实例,它要求在一个8x8的棋盘上放置8个皇后,使得任意两个皇后都不会在同一行、同一列,以及对角线上。下面是一个简单的Python程序,采用回溯法来寻找解决方案:
```python
def is_safe(board, row, col):
# 检查列冲突
for i in range(row):
if board[i] == col:
return False
# 检查左上到右下对角线冲突
start = max(0, row - col)
end = min(len(board) - 1, row + col)
for i in range(start, end + 1):
if board[i] == col:
return False
# 检查右上到左下对角线冲突
start = max(0, len(board) - row - col - 1)
end = min(len(board) - 1, row + col)
for i in range(start, end + 1):
if board[i] == col:
return False
return True
def solve_n_queens(n, board=range(n)):
# 如果所有皇后都已放置完成,则返回解决方案
if n == 0:
print("Solution: ", [row + 1 for row in 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
# 回溯:如果无法找到解决方案,撤销当前位置的皇后
board[n - 1] = n
# 如果遍历完所有行都没有找到解决方案,返回False
return False
# 开始搜索8皇后问题的解决方案
if not solve_n_queens(8):
print("No solution found for 8 queens problem.")
阅读全文