![]() |
1
5
要获得唯一有效的解决方案,可以在中心固定工件的方向。例如,您可以假设中心的工件上的“1”始终指向“上”。 如果您还没有这样做,您可以通过在放置每个工件后检查有效的解决方案来提高程序的效率。一旦您以无效的方式放置了两个片段,就不需要枚举所有其他无效的组合。 |
![]() |
2
3
如果中间没有碎片,这就很容易了。只需考虑以下情况:
但我们可以把这个想法扩展到实际情况。你只能考虑以下情况
|
![]() |
3
1
我认为搜索空间很小,尽管编程可能会很尴尬。 我们有七种选择作为中心。那么我们有6种选择 上面的部分,但它的方向是固定的,因为它的底边必须与中心部分的顶边匹配,同样地,当我们选择一个部分进入槽中时,方向是固定的。 剩下的部分选择较少。假设 例如,我们选择了中间部分和顶部部分,如图所示;然后 右上角件必须具有(顺时针)连续边缘(5,3),以匹配 位置,而且只有三件物品有这样的边缘(事实上,我们已经 选择其中一个作为中心部件)。 可以先用一个列表构建一个表 每个边缘对的件数,然后为中间和顶部的42个选项中的每一个选择 顺时针进行,仅在具有所需边对的工件中进行选择(以匹配中心工件和先前放置的工件),如果没有这样的工件,则进行回溯。 我估计最常见的一对边是(1,6),它出现在4片上,另外两对边((6,5)和(5,3))出现在3片上,有9对边出现在2片上,14 发生在1件和4件上,根本不发生。 所以对我们必须做出的选择数量的一个非常悲观的估计是 7*6*4*3*3*2或3024。 |
![]() |
user2230555 · 循环(或应用?)两个因素水平的所有组合 7 年前 |
![]() |
alberto · 大小为K的整数向量组合(用C++实现) 7 年前 |
![]() |
Gravrok · 无镜像解的组合数学序列 7 年前 |
![]() |
MarcelKlockman · 生成给定条件的列表的所有组合 7 年前 |
![]() |
madtyn · Python:有可能使这个尾部递归阶乘更快吗? 7 年前 |
![]() |
Satya · 提高以下组合算法的性能 7 年前 |