1

我有一组数字:

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,因此非常感谢所有帮助或解决方案。澄清一下,这不是作业,这只是我想学习和理解的东西。

4

1 回答 1

0

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

编辑

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

于 2012-03-10T08:47:25.377 回答