python 八皇后问题

fromitertoolsimportpermutationsn=4cols=range(n)forvecinpermutations(cols):if(n==len(s... from itertools import permutations
n = 4
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)

我想知道 if (n == len(set(vec[i] + i for i in cols)) == len(set(vec[i] - i for i in cols))): 是什么意思啊,
或者解释一下set(vec[i]+i for i in cols))是什么意思

显示的是这个结果,但是我看不懂
展开
 我来答
lucifer_001
2015-03-15 · TA获得超过684个赞
知道小有建树答主
回答量:414
采纳率:0%
帮助的人:415万
展开全部

vec[i]+i for i in cols  这个相当于

for i in cols:
    vec[i]+i

   这个表达式应该会产生四个数,比如是2,2,2,2

然后用set((2,2,2,2))就是{2}

追问
if 语句在什么情况下为true 啊,能不能解释一下,有点没看明白这句话的思路
追答
n =4 ,因此当len(set(vec[i] + i for i in cols)) 和 len(set(vec[i] - i for i in cols))均等于4时成立
即set(vec[i] + i for i in cols)和set(vec[i] - i for i in cols)长度均为4时成立
左边是每个数加上下标,右边是每个数减下标,当他们都含有四个不同元素的时候就成立了
例如 (1,3,0,2),左边是(1,4,2,5),右边是(1,2,-2,-1) 长度都是4,就成立了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式