使用回溯法解决n皇后问题(递归方式)。 给出n=10与n=12的py解决方案。
时间: 2024-02-25 14:53:44 浏览: 25
以下是使用回溯法解决n皇后问题的Python代码,其中包括n=10和n=12的解决方案:
```python
def solve_n_queens(n):
def is_valid(board, row, col):
for i in range(row):
if board[i] == col or \
board[i] - i == col - row or \
board[i] + i == col + row:
return False
return True
def backtrack(board, row, res):
if row == n:
res.append(board[:])
return
for col in range(n):
if is_valid(board, row, col):
board[row] = col
backtrack(board, row+1, res)
board[row] = -1
board = [-1] * n
res = []
backtrack(board, 0, res)
return res
# n=10的解决方案
print(solve_n_queens(10))
# n=12的解决方案
print(solve_n_queens(12))
```
该算法使用一个一维数组board来表示棋盘,其中board[i]表示第i行皇后所在的列数。函数is_valid用于检查某个位置是否可以放置皇后,函数backtrack用于回溯求解所有可能的解。最终返回的结果是一个列表,其中每个元素表示一种解法,其中列表的每个元素表示皇后在每一行的列数。