这是教材上的代码:
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.此种方法看上去较酷,感到很高大上的编程。占用内存小,运用了生成器。
2.教材上讲了如果不能安排好下一下皇后,则进行上一个皇后的位置改变,再迭代。但我感觉是究举之后的依次判断,即列出所有可能的位置组合,再进行一一判断。
3.可以先理解,用递归实理的N层迭代。如下代码
def my_func(num, state=()):

本文探讨了Python解决八皇后问题的递归方法,强调其内存效率和生成器的运用。作者指出,该方法通过列举所有可能的皇后位置组合,并进行判断,来寻找解决方案。递归实现的N层迭代是理解该问题的关键。
最低0.47元/天 解锁文章
807

被折叠的 条评论
为什么被折叠?



