基于深搜的n皇后问题python
时间: 2023-05-25 15:02:35 浏览: 105
Python实现的n皇后问题的回溯算法
以下是基于深搜的n皇后问题的Python代码:
```
def solve_n_queens(n):
def dfs(queens, xy_dif, xy_sum):
p = len(queens)
if p == n:
result.append(queens)
return None
for q in range(n):
if q not in queens and p-q not in xy_dif and p+q not in xy_sum:
dfs(queens+[q], xy_dif+[p-q], xy_sum+[p+q])
result = []
dfs([],[],[])
return result
n = 4
solutions = solve_n_queens(n)
count = 1
for solution in solutions:
print("Solution", count, ":")
count += 1
for i in range(n):
row = ['Q' if j == solution[i] else '.' for j in range(n)]
print(''.join(row))
print()
```
将n传递给solve_n_queens函数,该函数使用深度优先搜索算法查找N皇后问题的所有解。该算法使用三个列表来跟踪所有皇后的列、左上右下线和右上左下线,以判断皇后所占据的位置是否可以在同一行、列或对角线上添加另一个皇后。最终,该算法返回一个由所有可能的解组成的列表。
在代码示例中,我们将n设置为4,此时有两个可能的解。循环遍历所有解,打印出每个解的棋盘状态。
阅读全文