思路:x[k]==x[i] or abs(i-k)==abs(x[i]-x[k])的位置不可放皇后
代码展示:
def plack(k):
for i in range(0,k):
if x[i]==x[k] or abs(i-k)==abs(x[i]-x[k]):
return False
return True
def queen(n):
x[0]=-1
k=0
while k>=0:
x[k]=x[k]+1
while x[k]<n and plack(k)==False:
x[k]=x[k]+1
if(x[k]<n):
if k==n-1:
for j in range(0,n):
print('({},{}) '.format(j,x[j]),end='')
print()
else:
k=k+1
x[k]=-1
else:
k=k-1
m=int(input('请输入皇后的个数:'))
x=[0 for i in range(0,m)]
print('{}皇后的解如下:'.format(m))
queen(m)
运行结果:
1>
请输入皇后的个数:4
4皇后的解如下:
(0,1) (1,3) (2,0) (3,2)
(0,2) (1,0)