Logic 任何人都有以下谜题的逻辑

Logic 任何人都有以下谜题的逻辑,logic,puzzle,Logic,Puzzle,我有一个n*n矩阵。 每个顶点都有一个与其关联的度。度是可以绘制到其相邻顶点的线数。 我正在生成一个数组,其中包含每个顶点的度数。 例如,数组{1,2,2,1}实现了以下两种解决方案 解决方案1 解决方案2 我想要的是,当我得到数组时,我想知道它是有一个解还是有多个解 这是另一个例子{0,3,1,2,4,2,2,1,3}有多个解决方案。我在某个地方读到过这个。我认为有两种方法:暴力或精炼 暴力:如果发现矛盾(节点的入线计数与其出线次数不对应),则递归地尝试每个顶点的度所允许的任何线的组合,并

我有一个n*n矩阵。 每个顶点都有一个与其关联的度。度是可以绘制到其相邻顶点的线数。 我正在生成一个数组,其中包含每个顶点的度数。 例如,数组{1,2,2,1}实现了以下两种解决方案

解决方案1

解决方案2

我想要的是,当我得到数组时,我想知道它是有一个解还是有多个解


这是另一个例子{0,3,1,2,4,2,2,1,3}有多个解决方案。

我在某个地方读到过这个。我认为有两种方法:暴力或精炼

暴力:如果发现矛盾(节点的入线计数与其出线次数不对应),则递归地尝试每个顶点的度所允许的任何线的组合,并返回轨迹

优化:从链接最多的节点开始,而不是从第一个节点开始。这也会通过剩余节点进行递归,但剩余节点会根据其度数的剩余值进行更新(例如,如果前一个节点已经有一条线,则该节点的度数会递减)。速度更快的原因是,度数较大的节点对其周围的节点构成了更高的限制,例如,如果节点将邻居节点的剩余度数减少到0,则该节点必须考虑0种情况。

Better post at