import java.util.Arrays;
import java.util.TreeSet;
public class CombinationTest {
public static void main(final String[] args) {
final String[] ss = { "B", "A", "E", "B", "C", "D" };
final String[] arr = new TreeSet<>(Arrays.asList(ss)).toArray(new String[0
]); // 去重
for (int n = 1; n <= arr.length; n++) {
final String[] out = new String[n];
combine(arr, out, 0, 0, n);
}
}
private static void combine(final String[] in, final String[] out, final in
t curIdx, final int level, final int n) {
if (level == n) {
System.out.println(Arrays.toString(out));
return;
}
for (int i = curIdx; i < in.length; i++) {
out[level] = in[i];
combine(in, out, i + 1, level + 1, n);
}
}
}
输出:
[A]
[B]
[C]
[D]
[E]
[A, B]
[A, C]
[A, D]
[A, E]
[B, C]
[B, D]
[B, E]
[C, D]
[C, E]
[D, E]
[A, B, C]
[A, B, D]
[A, B, E]
[A, C, D]
[A, C, E]
[A, D, E]
[B, C, D]
[B, C, E]
[B, D, E]
[C, D, E]
[A, B, C, D]
[A, B, C, E]
[A, B, D, E]
[A, C, D, E]
[B, C, D, E]
[A, B, C, D, E]
【 在 iStudy 的大作中提到: 】
: a,b,c,d四个对象
: 我要生成a,b,c,d的全组合===C(4,1)+C(4,2)+C(4,3)+C(4,4)
: 结果就是输出 {a,b,c,d, ab,ac,ad,bc,bd,cd,abc,abd,acd,bcd,abcd}
: ...................
--
FROM 119.233.240.*