刚刚在SO上发现了另一个线程,这正是我所需要的:How can I create cartesian product of vector of vectors?
谢谢大家!
假设我有一组值S1(A, B, C)
而另一组S2(D, E, F)
,其中转换S1 -> S2
会给另一组S3
,其中S3(AD, AE, AF, BD, BE, BF, CD, CE, CF)
;换句话说,我想将第一组的每个值映射到第二组的每个值,从而得到第三组,其大小为S1 x S1
。
现在,对于两组来说这样做是件微不足道的事情,但是,当涉及到可变数量的集合时,我感到茫然,即S1 -> S2 -> S3 -> ... -> Sn
如果我们将其视为树/图结构,则通过查找每个路径来解决问题:
start
.
. . .
A B C
. . .
. . . . . . . . .
D E F D E F D E F
是否有可扩展的算法来解决这个问题?
答案 0 :(得分:2)
根据定义,这将是递归。如果您将所有这些集合放入一个多维数组中,您可以轻松地通过所有不同级别进行递归并创建最终集合。