本文实例讲述了Python基于生成器迭代实现的八皇后问题。分享给大家供大家参考,具体如下:
问题:有一个棋盘和8个要放到上面的皇后,唯一的要求是皇后之间不能形成威胁。也就是说,必须把他们防止成每个皇后都不能吃掉其他皇后的状态。
# -*- coding: utf-8 -*- #python 2.7.13 __metaclass__ = type def confict(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 confict(state, pos): if len(state) == num -1: yield (pos,) else: for result in queens(num, state + (pos,)): yield (pos,) + result print list(queens()) #打印输出
运行结果:
输出列表长度:
print len(list(queens()))# 输出:92
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。