python 解决八皇后问题
def GetMap(Max):
Map = []
for i in range(Max):
Map.append([0]*8)
return Map
def ShowMap(Map,):
ret = []
for ele in Map:
ret.append(ele.index(1)+1)
return ret
def Rule(Map,row):
i2 = row
j2 = Map[row].index(1)
for i1 in range(row):
j1 = Map[i1].index(1)
if j1 == j2 or abs(i2-i1)==abs(j2-j1):
return False
return True
def GetResult(Map,row,res=[]):
'''
:param Map: 棋盘
:param row: 行
:param res: 统计所有拜访位置
:return res :返回结果
'''
if row == Max:
Map = ShowMap(Map,)
res.append(Map)
return True
else:
for column in range(Max):
Map[row][column] = 1
if Rule(Map,row):
GetResult(Map,row+1)
Map[row][column] = 0
else:
Map[row][column] = 0
return res
if __name__ == '__main__':
Max = 8
Map = GetMap(Max)
res = GetResult(Map,0)
print('共有:%s种方法'%len(res))
for ret in res:
print(str(ret))
input()