我想找到一组整数的子集。这是具有回溯功能的“子集总和”算法的第一步。我已经编写了以下代码,但是没有返回正确的答案:
BTSum(0, nums);
///**************
ArrayList<Integer> list = new ArrayList<Integer>();
public static ArrayList<Integer> BTSum(int n, ArrayList<Integer> numbers) {
if (n == numbers.size()) {
for (Integer integer : list) {
System.out.print(integer+", ");
}
System.out.println("********************");
list.removeAll(list);
System.out.println();
} else {
for (int i = n; i < numbers.size(); i++) {
if (i == numbers.size() - 1) {
list.add(numbers.get(i));
BTSum(i + 1, numbers);
} else {
list.add(numbers.get(i));
for (int j = i+1; j < numbers.size(); j++)
BTSum(j, numbers);
}
}
}
return null;
}
例如,如果我要计算set = {1,3,5}的子集,则我的方法的结果是:
1, 3, 5, ********************
5, ********************
3, 5, ********************
5, ********************
3, 5, ********************
5, ********************
我希望它产生:
1, 3, 5
1, 5
3, 5
5
我认为问题出在零件list.removeAll(list);中。但我不知道如何纠正它。
交互式爱情
九州编程
芜湖不芜
有N组数字,每组个数不定,如何计算哪一组数字大小最均匀?
JS如何计算数组中某数字的个数?
Autowired注解集合和数组
如何从键盘输入一组圆的半径存放在一个数组中,计算出这组圆的面积并存放在另一个数组中,输出所有圆的半径及对应的面积信息。