ou have been given a set of n integers. You need to write a program that will divide the set in two subsets of n/2 sizes each such that the difference of the sum of two subsets is as minimum as possible.


 
public class Problem_04 {

	public static void main(String[] args) {

		 int arr[] = {3, 4, 5, 3, 100, 1, 83, 54, 23, 20};
	        int n = arr.length;
	        System.out.println("The minimum difference of two set is :"+ findMinimum(arr, n));

	}

	private static int findMinimum(int[] arr, int n) {
		
		int sum = 0;
        for (int i = 0; i < n; i++)
            sum =sum + arr[i];
 
       return findMinSumRecursive(arr,n,0,sum);   //recursion

	}

	private static int findMinSumRecursive(int[] arr,int n,int x,int sum) {
		
		 if (n == 0) {
	      return Math.abs((sum - x)- x);
		 }
	    
		return Math.min(findMinSumRecursive(arr, n-1,x + arr[n - 1],sum),findMinSumRecursive(arr, n - 1, x,sum));
		
	}

}