package com.interview.array;
import java.util.ArrayList;
import java.util.List;
/*
* http://www.geeksforgeeks.org/tug-of-war/
*/
public class TugOfWar {
private int minFoundSoFar = 1000000;
public int findMind(int arr[]){
int total = 0;
for(int i=0; i < arr.length; i++){
total += arr[i];
}
List<Integer> result = new ArrayList<>();
combinationUtil(arr,arr.length/2,0,0,total,0,result);
return minFoundSoFar;
}
private void combinationUtil(int arr[],int k, int start,int sum, int total,int pos, List<Integer> result){
if(pos == k){
if(Math.abs(sum - total/2) < minFoundSoFar) {
minFoundSoFar = Math.abs(sum - total/2);
System.out.println(result);
}
return;
}
for(int i=start; i < arr.length; i++){
sum += arr[i];
result.add(arr[i]);
combinationUtil(arr,k,i+1,sum,total,pos+1,result);
result.remove(result.size()-1);
sum -= arr[i];
}
}
public static void main(String args[]){
TugOfWar tow = new TugOfWar();
int arr[] = {23, 45, 34, 12,11, 98, 99, 4, 189, 1,7,19,105, 201};
int min = tow.findMind(arr);
System.out.print(min);
}
}