这是教材上的代码:
def conflict(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, state=()):
#print num,state
for pos in range(num):
if not conflict(state, pos):
if len(state) == num-1:
yield (pos,)
else:
for result in queens(num, state+(pos,)):
#生成八或N个的元组
yield (pos, ) + result
分析一:
1.此种方法看上去较酷,感到很高大上的编程。占用内存小,运用了生成器。