Algorithm 连接墙算法
我必须找出一个算法,为“连接墙”游戏找到一个解决方案 在“连接墙”中,我们将矩形板分成相等的方形单元。在每个单元中,我们可以放置一个对角墙(从左上角指向右下角或从左下角指向右上角)。我们必须按照以下规则在所有的空白处设置墙壁:Algorithm 连接墙算法,algorithm,Algorithm,我必须找出一个算法,为“连接墙”游戏找到一个解决方案 在“连接墙”中,我们将矩形板分成相等的方形单元。在每个单元中,我们可以放置一个对角墙(从左上角指向右下角或从左下角指向右上角)。我们必须按照以下规则在所有的空白处设置墙壁: 每个单元格必须包含一堵墙 墙壁不得形成闭合环(我们不能“砌砖”) 连接到支柱的墙的数量必须与书写的数量匹配 在柱子上 此外,一些细胞可能含有我们无法移动的细胞壁 请帮忙 编辑: 嗯。我已经设法用C写了简化算法。我需要有人检查我。目前它的工作原理如下: 此外,我还有一个关
如果新添加的边(墙)连接来自同一连接组件的点-这是一个循环。有趣的游戏。有点像扫雷车 您是否只对获得解决方案的方法感兴趣?在这种情况下,它是一个简单的树搜索。有点像解迷宫。回溯之类的。易于修剪子树,因为限制非常严格 快一点?寻找边界上的所有“2”支柱。先把它们都填好。同时填充拐角处的“1”柱。标记所有连接到“0”柱的墙为不可能,但标记所有其他方向(因为必须标记所有这些正方形) 然后,对于具有墙的必要编号的每个支柱,将所有其他连接到该支柱的墙标记为不可能,并标记所有其他方向。然后用一堵墙标记与“3”根柱子相连的所有其他墙壁。标记所有其他与“2”柱相连的墙,其中有两个不可能的墙。然后是“1”支柱。循环
在像这样简化电路板之后,您必须在其余未指定的墙上执行普通树搜索。标记一堵潜在的墙,然后再次在上面循环以消除可能性。类似于家庭作业。正如斯蒂芬·钟(Stephen Chung)所写,我曾试图首先解决支柱“0”、“2”和角落“1”的边境案件。然后是所有的“4”支柱。然后排除周围有“x”支柱和x个自由点的所有情况(占用的点未连接到当前支柱)。然后…我不知道我尝试了“人机”方法(即玩游戏),看起来简单地重复这些步骤就能找到答案。很少需要超过一个级别的搜索,所以最后是N个主教的问题?我将尝试实现它,看看它是如何工作的。谢谢你的提示。嗯,N-主教问题需要你通过一个搜索树。这一个看起来你可以单独用迭代来完成。甚至不需要在树上下一层。你的每一步行动都会消除一系列的可能性,同时也会要求你采取其他行动。那么“4”支柱呢?你忘了提了,我想我们也可以排除它们周围的细胞。@Maroou,是的。那也是。将其留作练习。:-)@马鲁,有件事我没提。不过,您必须检测循环。这可能需要递归。当我玩游戏的时候,有些位置有多种可能性,只是因为需要避免循环而被排除在外。