python 八皇后程序代码
时间: 2023-08-31 13:12:40 浏览: 94
以下是 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))
if __name__ == "__main__":
prettyprint(random.choice(list(queens())))
```
该代码中,`conflict()` 函数用于判断放置皇后的位置是否与已有皇后冲突,`queens()` 函数使用递归方式生成所有可能的皇后位置组合,`prettyprint()` 函数用于输出八皇后问题的解。在主函数中,随机选择一个解并输出。
阅读全文