【发布时间】:2022-02-03 18:16:57
【问题描述】:
我在previous question 中询问过这个问题。我想找到指定长度的所有子集。
Damien 用 C++ 给我写了一个nice answer,我正在尝试转换它,但没有运气。这是我的尝试:
import java.util.*;
public class Subset {
void getSubsetAux(ArrayList<ArrayList<Integer>> s, int n, int k, int i,
ArrayList<Integer> dom, ArrayList<Integer> cs) {
if(n<k) return;
if(k == 0) {
s.add(cs);
return;
}
getSubsetAux(s, n-1, k, i+1, dom, cs);
cs.add(dom.get(i));
getSubsetAux(s, n-1, k-1, i+1, dom, cs);
cs.remove(cs.size() -1);
}
void getSubset(ArrayList<ArrayList<Integer>> s, int l, ArrayList<Integer> dom) {
ArrayList<Integer> cs = new ArrayList<>();
getSubsetAux(s, dom.size(), l, 0, dom, cs);
}
public void print(ArrayList<ArrayList<Integer>> l) {
for (ArrayList<Integer> el: l) {
System.out.println(el);
}
}
public void run(String[] args) {
ArrayList<Integer> dom = new ArrayList<>(Arrays.asList(1,2,3,4,5));
ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
getSubset(ret, 3, dom);
print(ret);
}
public static void main(String [] args) {
Subset s = new Subset();
s.run(args);
}
}
输出:
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
预期输出:(不一定是这个顺序)
[3, 4, 5]
[2, 4, 5]
[2, 3, 5]
[2, 3, 4]
[1, 4, 5]
[1, 3, 5]
[1, 3, 4]
[1, 2, 5]
[1, 2, 4]
[1, 2, 3]
我认为这与我不了解 Java 中的输出参数有关
【问题讨论】: