python n皇后问题csdn
时间: 2023-06-12 13:02:42 浏览: 100
回溯算法-求解N皇后问题-python实现
好的,以下是 Python 实现的 n 皇后问题,代码参考自 CSDN 的一篇博客文章。
```python
def conflict(state, nextX):
nextY = len(state)
for i in range(nextY):
if abs(state[i]-nextX) in (0, nextY-i):
return True
return False
def queens(num=8, state=()):
for pos in range(num):
if not conflict(state, pos):
if len(state) == num-1:
yield (pos,)
else:
for result in queens(num, state+(pos,)):
yield (pos,)+result
def prettyprint(solution):
def line(pos, length=len(solution)):
return '. '*(pos)+'X '+'. '*(length-pos-1)
for pos in solution:
print(line(pos))
for solution in queens(8):
print(solution)
prettyprint(solution)
```
这段代码中,`conflict` 函数用于判断当前皇后与已有皇后是否冲突,`queens` 函数用于递归求解所有可能的皇后位置,`prettyprint` 函数用于漂亮地输出皇后的位置。
最后,我们可以通过 `for solution in queens(8)` 来求解出 8 皇后问题的所有解,并通过 `prettyprint` 函数将每个解输出。
阅读全文