假期学习的进度

八皇后问题:
def solve_n_queens(n=8):
def is_safe(row, col, queens):
for r, c in enumerate(queens):
if c == col or abs(row - r) == abs(col - c):
return False
return True
def dfs(queens, row):
if row == n:
result.append(queens.copy())
return
# 尝试在当前行的每一列放置皇后
for col in range(n):
if is_safe(row, col, queens):
queens.append(col) # 放置皇后
dfs(queens, row + 1) # 递归处理下一行
queens.pop() # 回溯,撤销当前选择

result = []       # 存储所有解的容器
dfs([], 0)         # 从第0行开始递归
return result

solutions = solve_n_queens(8)
if solutions:
print("找到解数量:", len(solutions)) # 八皇后问题共有92个解
print("第一个解的棋盘表示:")
queens = solutions[0]
for col in queens:
line = ["."] * 8
line[col] = "Q"
print(" ".join(line))
else:
print("无解")

posted @ 2025-02-16 21:17  我嘞牛牛  阅读(3)  评论(0编辑  收藏  举报