Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.31 KB | None | 0 0
  1.  
  2. import java.util.ArrayList;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. import java.util.Scanner;
  6.  
  7. public class Main {
  8.     public static void main(String[] args) {
  9.         Scanner in = new Scanner(System.in);
  10.         int n = in.nextInt();
  11.         ArrayList<Integer> a = new ArrayList<>();
  12.         while (in.hasNextInt()) {
  13.             a.add(in.nextInt());
  14.         }
  15.         a.sort(Comparator.naturalOrder());
  16.         powerSet(new ArrayList<>(), a,0, n)
  17.             .forEach(l -> {
  18.                 l.forEach(e -> {
  19.                     System.out.print(e);
  20.                     System.out.print(" ");
  21.                 });
  22.                 System.out.println();
  23.             });
  24.     }
  25.  
  26.     private static List<List<Integer>> powerSet(List<Integer> cur, List<Integer> set, int max, int sum) {
  27.         List<List<Integer>> res = new ArrayList<>();
  28.         if (cur.stream().mapToInt(Integer::intValue).sum() == sum) {
  29.             res.add(cur);
  30.             return res;
  31.         }
  32.         for (int i = max; i < set.size(); ++i) {
  33.             List<Integer> next = new ArrayList<>(cur);
  34.             next.add(set.get(i));
  35.             if (next.stream().mapToInt(Integer::intValue).sum() <= sum) {
  36.                 res.addAll(powerSet(next, set, i, sum));
  37.             }
  38.         }
  39.         return res;
  40.     }
  41.  
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement