1 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您想要計(jì)算大小為 n 的數(shù)組中 r 元素的可能組合。你可以試試這個(gè)代碼。我將該函數(shù)稱為 nCr(不確定這是否是我們要解決的問題的正確數(shù)學(xué)符號(hào))
public static void main(String[] args) {
String[] array2 = { "TST1", "TST2", "TST3"};
List<List<String>> l = new ArrayList<>();
for (var i: Arrays.asList(0, 1, 2, 3)) {
l.addAll(nCr(array2, i));
}
System.out.println(l);
}
private static List<List<String>> nCr(String[] array, int r) {
List<List<String>> result = new ArrayList<>();
if (r == 0) return result;
if (r == 1) return nC1(array);
for (int i = 0; i < array.length - r + 1; i++) {
List<List<String>> result2 = nCr(
Arrays.copyOfRange(array, i + 1, array.length),
r - 1);
for (var x: result2 ) {
x.add(array[i]);
result.add(x);
}
}
return result;
}
private static List<List<String>> nC1(String[] array) {
List<List<String>> l = new ArrayList<>();
for (var x: array) {
l.add(new ArrayList<>(Arrays.asList(x)));
}
return l;
}
輸出:
[[TST1], [TST2], [TST3], [TST2, TST1], [TST3, TST1], [TST3, TST2], [TST3, TST2, TST1]]
添加回答
舉報(bào)