n皇后代码
时间: 2023-07-02 11:11:33 浏览: 51
以下是 N 皇后问题的 Python 代码实现:
```python
def is_valid(board, row, col, n):
# 检查列是否有冲突
for i in range(row):
if board[i][col] == 1:
return False
# 检查右上方是否有冲突
i, j = row - 1, col + 1
while i >= 0 and j < n:
if board[i][j] == 1:
return False
i, j = i - 1, j + 1
# 检查左上方是否有冲突
i, j = row - 1, col - 1
while i >= 0 and j >= 0:
if board[i][j] == 1:
return False
i, j = i - 1, j - 1
return True
def backtrack(board, row, n, res):
if row == n:
res.append(["".join(["Q" if i else "." for i in row]) for row in board])
return
for col in range(n):
if is_valid(board, row, col, n):
board[row][col] = 1
backtrack(board, row + 1, n, res)
board[row][col] = 0
def solve_n_queens(n):
res = []
board = [[0 for _ in range(n)] for _ in range(n)]
backtrack(board, 0, n, res)
return res
```
其中,`is_valid` 函数用于判断在当前棋盘上,第 `row` 行,第 `col` 列是否可以放置皇后。`backtrack` 函数则是回溯算法的核心,用于尝试在第 `row` 行放置皇后。最后,`solve_n_queens` 函数用于求解 N 皇后问题。