看很多童鞋写的n皇后问题代码很强大,但是我看不懂…
找了数据结构书上的n皇后问题照着用Python的语法翻译一下。。毕竟是从书上翻下来的,侵删了啦~
n = int(input())
lst = [0 for i in range(n+1)]
count = 0
def check(x, y):
for i in range(1, x+1):
if lst[i] == y:
return False
if i+lst[i] == x+y:
return False
if i-lst[i] == x-y:
return False
return True
def dfs(row):
global count
if row == n+1:
count += 1
return
for i in range(1, n+1):
if check(row, i):
lst[row] = i
dfs(row+1)
lst[row] = 0 # # 回溯 避免占着那啥不那啥,这也是为什么要用0覆盖的原因
return count
print(dfs(1))