码迷,mamicode.com
首页 > 其他好文 > 详细

8 queen暴力解决法

时间:2018-06-06 15:30:36      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:body   pad   索引   weight   spl   OLE   webkit   span   python   

 

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

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个皇后的坐标了。这个暴力解法将所有可能进行全排列后一个一个地判断是否有对角线共线,所以是非常慢的。

8 queen暴力解决法

标签:body   pad   索引   weight   spl   OLE   webkit   span   python   

原文地址:https://www.cnblogs.com/SZLLQ2000/p/9144456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!