AcWing 1432. 棋盘挑战(Python)
原题链接
中等
作者:
习学学
,
2021-01-22 10:51:23
,
所有人可见
,
阅读 265
n = int(input())
col = [True] * n
diagonal = [True] * (2*n)
b_diagonal = [True] * (2*n)
res = [-1] * n
cnt = 0
def dfs(x):
global cnt, n
if x == n:
if cnt < 3:
print(" ".join(str(num) for num in res))
cnt += 1
return
for i in range(n):
if col[i] and diagonal[i+x] and b_diagonal[n-x+i]:
res[x] = i + 1
col[i], diagonal[x+i], b_diagonal[n-x+i] = False, False, False
dfs(x+1)
res[x] = -1
col[i], diagonal[x+i], b_diagonal[n-x+i] = True, True, True
return
dfs(0)
print(cnt)