public class C1 { /** * Prints all subsets of the array. * * Given array length of N, the method takes O(2^N) time. * * @param a the array * @throws IllegalArgumentException if array missing */ public static void printSubsets(int[] a) { if (a == null) { throw new IllegalArgumentException(); } boolean[] c = new boolean[a.length]; printSubsets(a, c, 0); } private static void printSubsets(int[] a, boolean[] c, int i) { if (i == a.length) { boolean printed = false; System.out.print("["); for (int j = 0; j < a.length; j++) { if (c[j]) { System.out.print((printed ? ", " : "") + a[j]); printed = true; } } System.out.println("]"); } else { c[i] = false; printSubsets(a, c, i + 1); c[i] = true; printSubsets(a, c, i + 1); } } public static void main(String[] args){ printSubsets(new int[] { 1, 2, 3 }); } }