八皇后问题实现,皇后实现,效率较低import s


效率较低

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)#该片段来自于http://byrx.net

评论关闭