我有一小部分数字(长度 <= 5 个元素)。我需要将它拆分为子列表(或数组),其中将包含数字对、三元组、四元组的所有选项而无需重复(顺序无关紧要)。
列表 [a, b, c, d, e] 的示例:
- 单个数字的列表是原始列表[a, b, c, d, e] - 5 个元素
- 对列表[ [a,b], [a,c], [a,d], [a,e], [b,c], [b,d], [b,e], [c,d ] , [c,e], [d,e] ] - 10 个元素
- 三元组列表[ [a,b,c], [a,b,d], [a,b,e], [a,c,d], [a,c,e], [a,d,e ] , [b,c,d], [b,c,e], [b,d,e], [c,d,e] ] - 10 个元素
- 四边形列表[ [a,b,c,d], [a,b,c,e], [a,b,d,e], [a,c,d,e], [b,c,d , e] ] - 5 项
- 五人列表 (目前可能是一种) [ [a,b,c,d,e] ] - 1 个元素
我不知道如何为任何大小进行通用枚举,而不是画成一堆线。提前致谢)
UPD:用完成的循环附加答案
这是我得到的结果:
结论:
为了不创建长度为零的数组,可以将掩码的起始值更改为 1。