所有可能长度的所有可能组合
我有这样的数组。它可以有任意长度的行和列,但是列的长度是固定的。
{
{a, b},
{c, d},
{e, f}
}
我需要所有可能的长度的所有可能的组合。
所有组合,例如上面的数组的示例:
a, b, c, d, e, f
ac, ad, ae, af, bc, bd, be, bf, ce, cf, de, df
ace, acf, ade, adf, bce, bcf, bde, bdf
我该怎么做?
算法描述就足够了,但是代码示例(最好是C ++)将对我有很大帮助。我知道有recursion
个循环的for
气味,但是我做得不好。
答案 0 :(得分:1)
您可以按级别进行操作,作为描述中的格式化输出。
依此类推,直到第N级,其中N是行数
答案 1 :(得分:-1)
您的示例算法是:
function rec(str, array, level)
if level = array.size()
print str
else
for i in append(array[level], "")
rec(concat(str, i), array, level + 1)
endfor
endif
您将从
开始rec("", {{a, b},{c, d},{e, f}}, 0)