八皇后问题python
时间: 2023-06-20 18:10:06 浏览: 103
八皇后问题是一个经典的问题,可以使用回溯法来解决。下面是一个基于 Python 的八皇后问题的实现:
```python
def is_valid(board, row, col):
# 检查列是否合法
for i in range(row):
if board[i] == col:
return False
# 检查左上方是否有皇后
i, j = row - 1, col - 1
while i >= 0 and j >= 0:
if board[i] == j:
return False
i, j = i - 1, j - 1
# 检查右上方是否有皇后
i, j = row - 1, col + 1
while i >= 0 and j < len(board):
if board[i] == j:
return False
i, j = i - 1, j + 1
return True
def backtrack(board, row, res):
if row == len(board):
res.append(list(board))
return
for col in range(len(board)):
if is_valid(board, row, col):
board[row] = col
backtrack(board, row + 1, res)
board[row] = -1
def eight_queens(n):
board = [-1] * n
res = []
backtrack(board, 0, res)
return res
```
这里的 `is_valid` 函数用来检查当前位置是否可以放置皇后。`backtrack` 函数用来递归地搜索所有可能的解。最后,`eight_queens` 函数返回所有的解。
阅读全文