八皇后问题python源代码
时间: 2023-08-29 10:07:05 浏览: 46
可以参考以下代码:
```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)
```
注意,八皇后问题有多种解法,上面的代码只展示其中一种实现方式。