八皇后问题 python解法
时间: 2023-10-15 13:29:14 浏览: 49
八皇后问题是一个经典的回溯算法问题,以下是一个使用Python解决八皇后问题的示例代码:
```python
def is_safe(board, row, col):
# 检查当前位置的上方是否有皇后
for i in range(row):
if board[i] == col:
return False
# 检查左上方是否有皇后
if board[i] == col - (row - i):
return False
# 检查右上方是否有皇后
if board[i] == col + (row - i):
return False
return True
def solve_n_queens(n):
# 创建一个空棋盘
board = [-1] * n
def place_queen(row):
# 如果所有行都放置了皇后,打印出结果
if row == n:
print(board)
return
# 尝试在当前行的每个列放置皇后
for col in range(n):
if is_safe(board, row, col):
board[row] = col
place_queen(row + 1)
place_queen(0)
# 解决八皇后问题
solve_n_queens(8)
```
这段代码使用递归函数 `place_queen` 来尝试在每一行放置皇后。`is_safe` 函数用于检查当前位置是否安全,即没有其他皇后可以攻击到该位置。如果找到了一个可行解,将会打印出棋盘上皇后的位置。
请注意,这段代码只是一个示例,可能并不是最优解。在处理更大规模的问题时,可能需要使用更高效的算法来解决。