package com.anuragkapur.misc;
import java.util.ArrayList;
import java.util.Arrays;
public class SumSet {
public static int count = 0;
static void sum_up_recursive(ArrayList<Integer> numbers, int target, ArrayList<Integer> partial) {
//System.out.println(count++);
int s = 0;
for (int x: partial)
s += x;
if (s == target)
System.out.println("sum("+Arrays.toString(partial.toArray())+")="+target);
if (s >= target)
return;
for(int i=0;i<numbers.size();i++) {
ArrayList<Integer> remaining = new ArrayList<Integer>();
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<Integer>(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<Integer>());
}
public static void main(String args[]) {
Integer[] numbers = {2,4,1,3,8,4,6};
int target = 11;
sum_up(new ArrayList<Integer>(Arrays.asList(numbers)),target);
}
}