从可能重复的字符列表中生成唯一组合

时间:2010-10-04 20:07:57

标签: combinatorics combinations

我希望从元素列表中生成组合。现在我正在使用一种发电方式。例如,为了从{a,b,c}生成组合,我将枚举001,010,100,101等...并将相应二进制索引设置为1的元素。 但问题出现在列表中有重复的字符时说{a,a,b}。上述方法将给出a,a,b,ab,ba,aab。在哪里我只想看到a,b,ab,aa,aab。

我正在考虑编写一些二进制掩码来消除重复的字符串但是没有成功。 有关如何生成独特组合的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以生成长度等于不同元素数量的正整数向量,而不是生成位向量,这取决于每个组件的范围从0到相应元素的多重性。在上面的示例中,有两个不同的元素(a和b)分别具有多个元素2和1。因此,你会得到

a b
-------
0 1 --> b
1 0 --> a
1 1 --> ab
2 0 --> aa
2 1 --> aab
相关问题