2009-09-24 129 views
4

我想知道一个可能的算法来计算所有可能的组合,无需重复,从长度= 1开始,直到长度= N个元素。元素的所有可能组合

实施例:

元素:1,2,3

输出:

 
1 
2 
3 
12 
13 
23 
123 
+1

这听起来像你想要的功率设置...见http://en.wikipedia.org/wiki/Power_set – 2009-09-24 13:13:34

+0

所有的组合与订购无关吗? – 2009-09-24 13:13:56

回答

10

看数字0至2^N的二进制呈现 - 1.

n = 3 

i Binary Combination 

    CBA 

0 000 
1 001  A 
2 010  B 
3 011  A B 
4 100   C 
5 101  A C 
6 110  B C 
7 111  A B C 

所以,你只需要枚举数字1到2^n - 1,然后看看二进制表示法,以知道哪个ele包括。如果你想让它们按排序后的元素数排序或按顺序生成数字(SO上有几个例子)。

+0

谢谢!这么简单...我根本没有想到它。 再次感谢 – Dario 2009-09-24 13:22:52