八皇后算法-python

#encoding=utf8 ''' 八皇后问题:每一行,每一列,每一个斜线列只能有一个皇后。 ''' size = 8 queuePosition = {} allCount = 0 def generateQueuePosition(n): global allCount if n >= size : return False yList = getFreeGrid(n)#获取当前皇后可以放入的y轴坐标列表 for y in yList: queuePosition[n]=(n,y) if n == size -1: print queuePosition allCount += 1 if n < size -1: generateQueuePosition(n+1) def getFreeGrid(n): list = [i for i in range(0,size)] for (key,value) in queuePosition.items(): if key < n: x = value[0] y = value[1] #排除y所在行 if y in list: list.remove(y) #排除斜线 if x < n: tmp = n - x tmpy = y + tmp if tmpy in list: list.remove(tmpy) tmpy = y - tmp if tmpy in list: list.remove(tmpy) return list generateQueuePosition(0) print allCount

 

可得出92种方法。

你可能感兴趣的:(八皇后算法-python)