所有可能的组合组合

时间:2012-03-10 08:33:17

标签: php javascript c combinations powerset

我有一组数字:

1,22
1,46
32,1
1,9
32,22
1,14
1,45
1,33
33,22
45,22
32,46
32,9
3,1
3,9
3,22
3,32
3,46
9,22
46,22
46,45
46,33
15,1
15,46
15,6
15,22
15,3
15,9
15,45
15,33
15,32
15,14

我需要从它们获得组合,规则是如果后一个数字与该对中的第一个相同,则只能附加每个新对。

例如,如果我有一对{15,1},则下一个可以只有{1,46}而下一个{46,45},最后一对必须以整个集合的第一个数字结束。在这种情况下,它可以是例如{45,1}。

因此,具有4个设置限制的集合的最终结果将是

{15,1,1,46,46,45,45,1}

我可以做基本的电源设置并从数字组中生成所有可能的组合,但这似乎对我来说太高级了。

我可以使用C,Javascript或PHP,因此非常感谢所有帮助或解决方案。为了澄清,这不是一个功课,这只是我想学习和理解的东西。

1 个答案:

答案 0 :(得分:0)

这看起来好像某些图形数据结构和一些图形算法是合适的。您的图形将包含节点(每个节点都是数字)和边(每个节点代表您的一对)。然后编写适当的例程以绕着图形行走。你的问题并不完全清楚步行的规则是什么,但我猜你知道。

修改

当然,我应该指出你所拥有的已经是图形数据结构,它被称为邻接列表。谷歌围绕算法和表示。