import time
"""
N 皇后问题,不同皇后不能放置在同一直线或对角线上
"""
def Nqueen(n):
# arr[i] 表示每行皇后放置的第几列
arr = [0 for i in range(n)]
cnt = 0
i = 0
resume_flag = False # 回溯标志
while i >= 0 and i
if arr[i] > n-1:
i = i-1
resume_flag = True
continue
if resume_flag: # 回溯,重置未放置皇后的行的值
for k in range(i+1, n):
arr[k] = 0
resume_flag = False
arr[i] += 1
if arr[i] > n-1:
continue
attack_flag = False
for j in range(i):
if nearby([i,arr[i]], [j, arr[j]]):
attack_flag = True
break
if attack_flag:
arr[i] += 1
else:
if i == n-1:
cnt += 1
# print("arr:", arr) # 当前可能的皇后放置方法<