n皇后回溯法 python代码
时间: 2023-07-02 12:19:47 浏览: 109
以下是n皇后问题的回溯法Python代码,可以求解任意n的解法:
```python
def is_valid(board, row, col):
"""
判断在(row, col)位置放置皇后是否合法
"""
for i in range(row):
if board[i] == col or abs(board[i] - col) == abs(i - row):
return False
return True
def backtrack(board, row, n, res):
"""
回溯求解n皇后问题
"""
if row == n:
res.append(list(board))
return
for col in range(n):
if is_valid(board, row, col):
board[row] = col
backtrack(board, row+1, n, res)
board[row] = -1
def n_queens(n):
"""
求解n皇后问题,返回所有解法
"""
board = [-1] * n
res = []
backtrack(board, 0, n, res)
return res
```
其中,`board`是一个长度为n的一维数组,`board[i]`表示第i行皇后所在的列数。`is_valid()`函数判断在(row, col)位置放置皇后是否合法,`backtrack()`函数是回溯求解n皇后问题的核心逻辑,`n_queens()`函数是暴露给用户的接口,返回所有解法。
阅读全文