【发布时间】:2013-06-03 06:35:40
【问题描述】:
我知道有很多类似的问题,而且我已经阅读了好几个小时。但似乎没有一个符合我的要求。
我有列表列表(列表>)列表可以是任意大小。
例子:
我的外部列表大小是:4
列表内容
1. list(0) a,b,c size:3
2. list(1) d,b,f,m size:4
3. list(2) x,a size:2
4. list(3) b,e,d,m,a size:5
这里是我的组合
adxb
adxe
adxd (adx) duplicate element will be removed after generating combination
adxm
adxa (adx)
adab (adb)
adae (ade)
...
...等等
我必须通过从每个列表中选择一个元素来生成组合 组合长度最大为 4(外部列表的大小),有时如果我在组合中得到相同的元素,它会缩小
我的组合数量将是每个内部列表中元素数量的乘积。
在上面的示例中,组合数将是3x4x2x5=120 组合
由于我的列表包含重复的元素,我也会得到重复的组合 在这里,如果我有 adab adba 那么 adba 是重复的,因为 顺序无关紧要。
问题是我使用简单的方法来生成组合,如果我的外部列表大小增加并且我的内部列表包含更多元素,我最终会生成数百万个组合,但只有 1000 或 2000 个将是唯一的其余所有重复项。
是否有任何算法方法可以仅生成唯一组合而不是生成所有组合?
【问题讨论】:
-
all-domain-sets-union 的累积集积可以创建所有可能的组合,并且没有重复
标签: java algorithm combinations