用python写N皇后问题代码
时间: 2023-12-17 13:47:29 浏览: 217
以下是Python实现的N皇后问题的代码:
```python
def is_valid(board, row, col, n):
# 检查列是否有冲突
for i in range(n):
if board[i][col] == 'Q':
return False
# 检查右上方是否有冲突
r, c = row - 1, col + 1
while r >= 0 and c < n:
if board[r][c] == 'Q':
return False
r, c = r - 1, c + 1
# 检查左上方是否有冲突
r, c = row - 1, col - 1
while r >= 0 and c >= 0:
if board[r][c] == 'Q':
return False
r, c = r - 1, c - 1
return True
def backtrack(board, row, n, res):
if row == n:
res.append(["".join(row) for row in board])
return
for col in range(n):
if is_valid(board, row, col, n):
board[row][col] = 'Q'
backtrack(board, row + 1, n, res)
board[row][col] = '.'
def solve_n_queens(n):
board = [['.' for _ in range(n)] for _ in range(n)]
res = []
backtrack(board, 0, n, res)
return res
```
这个算法使用回溯法来解决N皇后问题。我们使用一个NxN的棋盘来表示N皇后问题的解,其中'Q'表示皇后放置在该位置,'.'表示该位置为空。
在每一行中,我们尝试将皇后放置在每一个可用位置上,并且检查是否有冲突。如果没有冲突,我们将皇后放置在该位置,并且递归到下一行。如果递归到最后一行,我们就找到了一个解,并将其添加到结果列表中。如果存在冲突,我们就回溯到上一行,并尝试在上一行的其他位置放置皇后。
最终,我们返回所有的解。
阅读全文