英文:
Generate subset of length upto k
问题
我已编写了能够从长度大于等于 'k' 的输入生成长度为 'k' 的子集的代码。
我无法编写能够生成长度小于等于 'k' 的所有子集的代码。
public static void pset(List<Integer> original, List<Integer> lst, int k, int idx) {
if (lst.size() == k) {
System.out.println(lst);
return;
}
if (idx == original.size()) {
return;
}
lst.add(original.get(idx));
pset(original, lst, k, idx + 1);
lst.remove(lst.size() - 1);
pset(original, lst, k, idx + 1);
}
public static void main(String[] args) {
var original = List.of(1, 2, 3, 4);
pset(original, new ArrayList<>(), 2, 0);
}
希望这有所帮助。如果你有其他问题,请随时提出。
英文:
I have written down code that is able to generate subsets of an exact length 'k' from an input of length>'k'
I am unable to actually come up with code that generates all subset up-to length 'k'
public static void pset(List<Integer> original, List<Integer> lst, int k, int idx) {
if(lst.size() == k) {
System.out.println(lst);
return;
}
if(idx == original.size()) {
return;
}
lst.add(original.get(idx));
pset(original,lst,k,idx+1);
lst.remove(lst.size()-1);
pset(original,lst,k,idx+1);
}
public static void main(String[] args) {
var original = List.of(1,2,3,4);
pset(original, new ArrayList<>(),2,0);
}
答案1
得分: 3
当 idx == original.size()
时,这意味着你通过取列表的子集达到了列表的末尾,检查取得的子集长度是否最多为 k
。
英文:
public static void pset(List<Integer> original, List<Integer> lst, int k, int idx) {
if(idx == original.size() || lst.size() == k) {
if (lst.size() <= k)
System.out.println(lst);
return;
}
lst.add(original.get(idx));
pset(original,lst,k,idx+1);
lst.remove(lst.size()-1);
pset(original,lst,k,idx+1);
}
When idx == original.size()
that means you reached the end of the list by taking a subset of them, check if the taken subset length is at most k
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论