4名皇后和1名骑士在一块8*8的木板上攻击所有盖帽



我手头有一个问题,它是N-皇后问题的变体。问题是:找到一种方法,在8*8的棋盘上放置4个皇后和1个骑士,这样所有的方块都可以被这些棋子攻击。碎片相互攻击是可以的。

我知道如何使用回溯来解决最初的N问题。然而,在这个新问题中,我无法想出如何减少搜索次数的主意。我希望有人能给我一个提示。非常感谢。


谢谢大家@vish4071@Karoly Horvath@M Oehm我会考虑使用蛮力,看看我会得到什么。

使用蛮力。它应该在短时间内给你答案。

你有64个方块要考虑,5个方块要放。只需选择5个方块,放5块,看看这个场景是否涵盖了所有方块。这可以用C(64,5) * 5的方式来完成,也就是~3.8e7,在标准机器上,它很容易在不到1的时间内计算出来。

此外,如果你在64个方格中的4个方格中选择4个王后,然后让骑士只覆盖剩下的方格,你可以减少一些计算。这将围绕C(64,4) * k进行计算,即~1e6

我不认为一个天真的算法需要任何类型的优化,因为它无论如何都可能很快。。。但是,它是:

您可以始终将第一次移动限制在四分之一(例如:左上角),因为其他解决方案可以通过镜像或旋转生成。

你可以数出被覆盖的地方,一件可以覆盖的数量是有限制的(女王22件,国王9件),所以你可以把它作为提前终止无望分支的规则。

注意:因为你只有4个女王,所以把2个放在同一行或同一列可能是个坏主意。你可以试着限制一下。

最新更新