class queen:
def conflict(state,nextX):#x表示下一个皇后编号,state表示前N个皇后在Y轴的偏移,即第几个位
nextY=len(state)
for i in range(nextY);
if abs(nextX-state[i]) in (0,nextY-i):#判断是否冲突
return True
return flase
def queens(num,state=()):#一开始没皇后,state为空
for pos in range(num):
if not conflict(state,pos):#如果不冲突
if len(state)==num:#如果是最后一个皇后
yield (pos,) #以元组方式返回
else:
for result in queens(num,state+(pos,)):#把当前皇后的位置加入state继续运行
yield (pos,)+result
#转自一本书,无法贴出网址,只能选择原创了,见谅