import sys
sys.setrecursionlimit(100000)
qn = 8
pos = {}
[pos.update({r:0}) for r in range(qn)]
def printboard():
board = [ ['x' if c==pos[r] else '.' for c in range(qn) ]for r in range(qn) ]
print '\n'.join([' '.join(i) for i in board])
def check(q,col):
# return True
for row in range(q):
if col== pos[row] or abs(row-q) == abs(col-pos[row]):
return False
return True
def site_next(q,col):
print q,col
if col >= qn and q==0:
print 'failure out'
elif col >= qn and q>0:
print 'goback2 q,col',q-1,pos[q-1]+1
site_next(q-1,pos[q-1]+1)
elif check(q,col):
pos[q]=col
printboard()
if q >= qn-1:
print 'success out'
return
print 'ok,next q',q+1
site_next(q+1,0)
elif col < qn-1:
print 'check next col',col+1
site_next(q,col+1)
elif q>0:
print 'goback q,col',q-1,pos[q-1]+1
site_next(q-1,pos[q-1]+1)
if __name__ == '__main__':
site_next(0,0)
效率比较低
八皇后python实现
最新推荐文章于 2024-03-22 21:15:38 发布