python实现八皇后问题
2018-01-10 21:05
309 查看
import random def judge(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 judge(state, pos): if len(state) == num-1: yield (pos,) #(pos,)中的逗号使其必须被设置为元组而不是简单地加上括号 else: for result in queens(num, state+(pos,)): yield (pos,)+result def randomPrint(solution): for i in range(8): print( '•'*solution[i]+'X'+'•'*(8-solution[i]-1)) ans = int(len(list(queens(8)))) print(ans) randomPrint(random.choice(list(queens()))) #随机输出一种情况
![](https://images2017.cnblogs.com/blog/1047463/201801/1047463-20180110210500191-270915494.jpg)
相关文章推荐
- Python基于生成器迭代实现的八皇后问题示例
- Python实现八皇后问题
- 【算法】八皇后问题 Python实现
- Python实现八皇后问题
- 八皇后问题之python和scheme实现
- python 实际问题(一)--- 实现LED字母打印
- Python中利用列表推导式实现矩阵置换时发现的"问题"
- 多机调度问题——python实现
- 8皇后问题Python与C++实现
- 八皇后问题 java实现,算法两则
- Python实现最大子树问题
- C++实现八皇后问题
- 八皇后问题,C++实现
- 用Python实现约瑟夫问题
- C#WPF实现回溯算法解决八皇后问题
- 基数排序(Python实现出现的奇怪问题???)
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- 八皇后问题之回溯算法实现<java实现>
- 八皇后问题递归实现(C++)
- 8皇后问题的c++与python实现对比