Friday, September 13, 2013

in a given sorted array find allset of those numbers whose sun is equal to a given number

 static boolean findNumSetBySum(int[] arr, int sum) {
        int[] result = new int[100];
        boolean done = false;
        System.out.println("find set of num whose sum is a given num : " + sum);
        done= findNumSetBySum(arr, result, sum, 0, 0, false);
        return done;
    }

    static boolean findNumSetBySum(int[] arr, int[] result, int sum, int index, int i, boolean done) {
        if (sum == 0) {
            done = true;
            int j = 0;
            int n = 0;
            while (j < i) {
                if (result[j] != 0) {
                    System.out.print(result[j] + " , ");
                }
                j++;
            }
            System.out.println();
            return true;
        }
        if (done != true)
        {
            if ((sum > 0 && index == arr.length) || (sum < 0)) {
                return false;
            }
            if (sum > 0 && index < arr.length) {
                findNumSetBySum(arr, result, sum, index + 1, i, false);
                if (sum >= arr[index]) {
                    result[i] = arr[index];
                    findNumSetBySum(arr, result, sum - arr[index], index + 1, i + 1, false);
                }
            }
       //     return false;
        }
        return false;
    }

No comments:

Post a Comment