我想知道一个可能的算法来计算所有可能的组合,不重复,从长度=1开始,直到N个元素的长度=N。
例子:
元素: 1, 2, 3.
输出:
1 2 3 12 13 23 123
我想知道一个可能的算法来计算所有可能的组合,不重复,从长度=1开始,直到N个元素的长度=N。
例子:
元素: 1, 2, 3.
输出:
1 2 3 12 13 23 123
看一下数字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的数字,并查看其二进制表示,就能知道要包含哪些元素。如果你想按元素数量对它们进行排序,请对其进行排序或按顺序生成这些数字(在SO上有几个示例)。