import java.util.ArrayList;
import java.util.Arrays;
public class SumSet {
static void sum_up_recursive(ArrayList<Integer> numbers, int target, ArrayList<Integer> partial) {
int s = 0;
for (int x : partial) {
s += x;
}
if (s == target) {
System.out.println("sum(" + Arrays.toString(partial.toArray()) + ")=" + target);
}
else if (s >= target) {
return;
}
for (int i = 0; i < numbers.size(); i++) {
ArrayList<Integer> remaining = new ArrayList<>();
int n = numbers.get(i);
for (int j = i + 1; j < numbers.size(); j++) {
remaining.add(numbers.get(j));
}
ArrayList<Integer> partial_rec = new ArrayList<>(partial);
partial_rec.add(n);
sum_up_recursive(remaining, target, partial_rec);
}
}
static void sum_up(ArrayList<Integer> numbers, int target) {
sum_up_recursive(numbers, target, new ArrayList<>());
}
public static void main(String[] args) {
Integer[] numbers = { 5, 5, 10, 15 };
int target = 15;
sum_up(new ArrayList<>(Arrays.asList(numbers)), target);
}
}
当前输出是:
sum([5, 10])=15
sum([5, 10])=15
sum([15])=15
我试图弄清楚如何获得输出来打印数组的位置:
sum([3]) = 15
sum([0,3)] = 15
sum([1,3)]=15
最佳答案
如果我正确理解你的问题,你想打印原始列表中的位置,对吗?
在这种情况下,我建议您使用自定义元素类型,例如像这样的东西:
class PositionalElement {
final int position;
final int value;
public PositionalElement( int pos, int val ) {
position = pos;
value = val;
}
}
和
int[] numbers = new int[] {5,5,10,15};
List<PositionalElement> elements = new ArrayList<>();
for( int i = 0; i < numbers.length; i++ ) {
elements.add( new PositionalElement( i, numbers[i] ) );
}
这样,在打印输出时,您可以自由使用每个元素的值
和/或位置
。
关于java - 我有一些代码可以打印给定数组的摘要,但想知道如何打印位置而不是总和中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360502/