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