我手头有一个问题,这是N-Queen问题的一个变种。问题是:找到一种方法在8 * 8棋盘上放置4个皇后和1个骑士,这样所有的方块都可以受到攻击这些碎片。碎片相互攻击是可以的。
我理解如何使用回溯解决原始的N-Queen问题。但是,我无法想出如何在这里减少这个新问题的搜索次数。我希望有人能给我一个提示。谢谢。
谢谢大家。@ vish4071 @Karoly Horvath @M Oehm我会考虑使用蛮力,看看我得到了什么。
答案 0 :(得分:3)
使用蛮力。它应该在短时间内给你回答。
你要考虑64个方格,要放5个方格。只需选择5个方块并放入5个方块,然后查看此方案是否涵盖所有方块。这可以通过C(64,5) * 5
方式完成,~3.8e7
,在标准机器上现在可以很容易地在1秒内完成计算。
此外,如果你将4个皇后放入64个方格中的4个选区中然后放置骑士以仅覆盖剩余的方格,则可以减少一些计算。这将需要大约C(64,4) * k
次计算,即~1e6
。
答案 1 :(得分:0)
我不认为一个天真的算法需要任何类型的优化,因为它可能会很快...但是,这里是:
您始终可以将第一次移动限制为其中一个季度(例如:左上角),因为其余的解决方案可以通过镜像或旋转来生成。
你可以统计被遮盖的地方,并且限制一件可以覆盖的数量(女王为22,国王为9),因此您可以使用它作为规则,提前终止无望的分支。
注意:由于你只有4个皇后,将2放在同一行或列中可能是个坏主意。您可以尝试将其作为限制。