n = 8
# rec = [] # 定义二维数组存放皇后放置的位置信息
count = 0 # 用于记录可能的情况
def Check_bool(y, x, rec):
# 主要是检查不能在同一行不能在同一列不能在正负对角线
for j in rec:
if j[0] - j[1] == y - x or y + x == j[0]+j[1] or y == j[0] or x == j[1]:
return False
return True
def dfs(y, x, rec):
global count
# 出口
if y == n-1:
count += 1
return
if y > n-1 or x > n-1:
return
for i in range(n):
if Check_bool(y + 1, i, rec):
rec.append([y + 1, i])
dfs(y + 1, i, rec)
rec.pop(-1) # 回溯
# 主函数
for k in range(n):
dfs(0, k, rec=[[0, k]])
print(count)
Python回溯算法解决n皇后问题(蓝桥杯练习题)
最新推荐文章于 2023-01-02 17:31:43 发布