生成多个组的组合

时间:2014-11-04 12:53:32

标签: c algorithm combinations

我正在寻找一种非递归算法或C代码来生成多组的所有组合(不确定这是否是正确的科学名称)。例如:

我有N = 2组符号:

set 1: [A, Y, Z]
set 2: [1, Q]

输出应为:

A1
AQ
Y1
YQ
Z1
ZQ

N可以变化,与特定集合中的符号数量相同。在此先感谢您的帮助! :)

1 个答案:

答案 0 :(得分:0)

算法来自:How can I compute a Cartesian product iteratively?

我们可以创建一个int数组,其长度为n int[ ] choose[n],以跟踪我们在所有列表中选择的元素数量。最初将所有元素设置为0。

然后我们遍历存储所有这些数组的单链表。如果我们迭代了数组i中的元素choose[i]++,请将其附加到结果中。当选择[i] == array i的长度时,然后中断并继续下一个数组。

但我不知道如何进行追加,因为每次迭代数组时,结果的大小都会被扩展。

如果您已经知道了,请告诉我。