c++ - 所有可能长度的所有可能组合
问题描述
所有可能长度的所有可能组合
我有这样的数组。它可以有任意长度的行和列,但是,每一行的列长度是固定的。
{
{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
,但我不能正确地做到这一点。
解决方案
您可以按级别进行,作为描述中的格式化输出。
- 对于第一级,您将拥有自己的角色
- 第二级,您在每对相邻行之间进行笛卡尔积(容易 2 个 for 循环)
- 第三级:对于第二级的每个结果,对相邻两行之后的行进行笛卡尔积
依此类推..直到第 N 级,其中 N 是行数
推荐阅读
- javascript - NodeJS 提示符中的“this”值(声明的 vs 表达式函数)
- powershell - 如何访问带有错误的证书:“无法检索证书,因为指纹无效”
- google-sheets - 如何使用 OR 条件而不是 AND 条件进行过滤
- c++ - 转换函数按值返回时 boost::adaptors::transformed 的意外行为
- react-native - 将道具从模态传递到主屏幕
- c# - 可以将类实例属性作为属性中的值
- android - 从 SQLite 数据库返回的数据未分配给变量
- php - 如何一次向不同主题发送 FCM Multiple 通知消息
- qt - 如何重建Qt?
- ansible - 如何让 .stdout_lines/array 中的每一行匹配一个变量