首页 > 解决方案 > 所有可能长度的所有可能组合

问题描述

所有可能长度的所有可能组合

我有这样的数组。它可以有任意长度的行和列,但是,每一行的列长度是固定的。

{
    {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,但我不能正确地做到这一点。

标签: c++combinatorics

解决方案


您可以按级别进行,作为描述中的格式化输出。

  • 对于第一级,您将拥有自己的角色
  • 第二级,您在每对相邻行之间进行笛卡尔积(容易 2 个 for 循环)
  • 第三级:对于第二级的每个结果,对相邻两行之后的行进行笛卡尔积

依此类推..直到第 N 级,其中 N 是行数


推荐阅读