所有可能长度的所有可能组合
我有这样的数组。它可以具有任意长度的行和cols,但是cols的长度对于每一行都是固定的。
{
{a, b},
{c, d},
{e, f}
}
而且我需要所有可能的长度的所有可能的组合。
所有组合,上面数组的示例:
a
ac
ace
acf
ad
ade
adf
b
bc
bce
bcf
bd
bde
bdf
c
ce
cf
d
de
df
e
f
格式化:
a, b, c, d, e, f
ac, ad, bc, bd, ce, cf, de, df
ace, acf, ade, adf, bce, bcf, bde, bdf
我该如何完成?算法描述就足够了,但是代码示例(最好是C ++)将对我有很大帮助。我了解recursion
循环存在for
气味,但我无法正确执行。
您可以按级别进行操作,作为描述中的格式化输出。
依此类推,直到第N级,其中N为行数
您的示例算法是:
function rec(str, array, level)
if level = array.size()
print str
endif
for i in array[level]
rec(concat(str, i), array, level + 1)
endfor