n皇后问题:如何能够在 n×n 的国际象棋棋盘上放置n个皇后,使得任何一个皇后都无法直接吃掉其他的皇后。为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。
def backTrack(t,n):#核心代码
if t == n:
outPut()
return
else:
for i in range(n):
a[t],a[i]=a[i],a[t]#通过不断的交换找到所有可能解
if(legal(t)):
backTrack(t+1,n)
a[t],a[i]=a[i],a[t]
def outPut():#自定义输出函数
global count
count+=1
print(str(count) + ":")#表示第n个解
for i in range(n):
print(('(%d,%d)' % (i,a[i]+1)),end=' ')
print()
def legal(t):#判断是否在一条斜线上
for i in range(t):
if abs(t - i) == abs(a[t] - a[i]):
return False
return True
if __name__ == '__main__':
n=int(input())
a=[i for i in range(n)]
count=0
backTrack(0,n)