Advertisement
vladimirVenkov

TwoSumPlusFakeInput

Jun 15th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.24 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.Arrays;
  6.  
  7. public class TargetSum {
  8.     static void fakeInput() {
  9.         String test = "1 1 1 1 1\n"
  10.         + "3";
  11.         System.setIn(new ByteArrayInputStream(test.getBytes()));
  12.     }
  13.     public static void main(String[] args) throws IOException {
  14.         fakeInput();
  15.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  16.         int[] numbers = Arrays.stream(br.readLine().split(" "))
  17.                 .mapToInt(Integer::parseInt)
  18.                 .toArray();
  19.         int targetSum = Integer.parseInt(br.readLine());
  20.         int result = solve(0, numbers, 0, targetSum);
  21.         System.out.println(result);
  22.     }
  23.  
  24.     static int solve(int index, int[] numbers, int current, int target) {
  25.         //stop
  26.         if (index == numbers.length) {
  27.             if (current == target) {
  28.                 return 1;
  29.             }
  30.             return 0;
  31.         }
  32.         int count = 0;
  33.         count += solve(index + 1, numbers, current + numbers[index], target);
  34.         count += solve(index + 1, numbers, current - numbers[index], target);
  35.         return count;
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement