很容易看出来,在每一行和每一列上有且只能有一个皇后,因此较为复杂的判断就是对角线了。维基百科的页面上有一个非常暴力但是写起来非常简单的解法:

1
2
3
4
5
6
7
8
from itertools import permutations

n = 8
cols = range(n)
for vec in permutations(cols):
if (n == len(set(vec[i] + i for i in cols))
== len(set(vec[i] - i for i in cols))):
print vec

cols是一个长度为8的数组,其索引代表第几行,值代表第几列,于是便可以用这个列表来表示8个皇后的坐标了。这个暴力解法将所有可能进行全排列后一个一个地判断是否有对角线共线,所以是非常慢的。

最新文章

  1. linux
  2. linux /proc/meminfo 文件分析(转载)
  3. 微软亚洲实验室一篇超过人类识别率的论文:Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification ImageNet Classification
  4. HTML教程
  5. DataTableToJson
  6. 使用UEFI BIOS Updater(UBU)来更新CPU微代码
  7. Large-Scale Deployment of SharePoint Team Services
  8. J2EE开发中常用的缓存策略
  9. android端从服务器抓取的几种常见的数据的处理方式
  10. 谈话Java在ThreadLocal理解类
  11. python入门小记
  12. 利用Python爬取可用的代理IP
  13. [HAOI2011]向量
  14. linux C中调用shell命令和运行shell脚本
  15. flex布局,最后一行左对齐
  16. Hibernate的条件查询的几种方式+查询所有的记录
  17. java_io
  18. 小学四则运算APP 第三阶段冲刺-第一天
  19. html5 视频和音频
  20. java 按概率产生

热门文章

  1. KMP算法——从入门到懵逼到了解
  2. java框架篇---hibernate(一对多)映射关系
  3. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
  4. 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM
  5. 聊聊动态语言那些事(Python)
  6. 大量删除MySQL中的数据
  7. 大数据基础篇----jvm的知识点归纳-5个区和垃圾回收机制
  8. [JS] ECMAScript 6 - Async : compare with c#
  9. [Laravel] 06 - Project: from Usercase to View
  10. 4、一、Introduction(入门):3、System Permissions(系统权限)