gpt4 book ai didi

python - 求 N 皇后拼图递归算法的唯一解

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:41 26 4
gpt4 key购买 nike

# -*- coding: utf-8 -*-


def puzzle(rows, cols):
if rows == 0:
return [[]]
else:
return new_queen(rows - 1, cols, puzzle(rows - 1, cols))


def new_queen(new_row, cols, plsd_queens):
new_solutions = []
for solution in plsd_queens:
for new_col in range(cols):
if test(new_row, new_col, solution):
new_solutions.append(solution + [new_col])
return new_solutions


def test(new_row, new_col, solution):
for row in range(new_row):
if solution[row] == new_col or solution[row] + row == new_col + new_row or\
solution[row] - row == new_col - new_row:
return False
return True

大家好!我怎样才能找到这个 N 皇后问题递归算法的唯一解?它只找到所有解决方案:在 8x8 上它将有 92 个解决方案,但唯一的只有 12 个(其他解决方案是从这 12 个中翻译和镜像的)

最佳答案

我认为这些很有用: link1 link2

为了获得最佳结果,您应该通过动态规划设计您的算法,并且可以在以下位置找到它: google Stackoverflow

你设置了一个数组 a[n][count] 并将状态 i 保存在 a[..][i] 中。这是 n=8 的第一个项目示例:

a = {5,1,8,4,2,7,3,6}{1} , .....

注意:每个解决方案可以通过对称和旋转更改为 8 种状态。因此对于每个结果,您对称和旋转他们的解决方案以检查是否保存在您的数组中?

关于python - 求 N 皇后拼图递归算法的唯一解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15186137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com