Combinations2.java


Below is the syntax highlighted version of Combinations2.java from §2.7 Recursion.

/*************************************************************************
 *  Compilation:  javac Combinations2.java
 *  Execution:    java Combinations2 N k
 *  
 *  Enumerates all subsets of size k on N elements.
 *
 *  % java Subsets2 3 5
 *  0 1 2 
 *  0 1 3 
 *  0 1 4 
 *  0 2 3 
 *  0 2 4 
 *  0 3 4 
 *  1 2 3 
 *  1 2 4 
 *  1 3 4 
 *  2 3 4 
 *
 *************************************************************************/

public class Combinations2 {


    public static void generate(int[] s, int position, int k, int N) {
        if (position == k) {
            for (int i = 0; i < k; i++)
                System.out.print(s[i] + " ");
            System.out.println();
            return;
        }
        for (int i = s[position-1] + 1; i < N; i++) {
            s[position] = i;
            generate(s, position + 1, k, N);
        }
    }  

    public static void main(String[] args) {
       int N = Integer.parseInt(args[0]);
       int k = Integer.parseInt(args[1]);

       int[] s = new int[N];
       for (int i = 0; i < N; i++) {
           s[0] = i;
           generate(s, 1, k, N);
       }
    }
}


Last updated: Tue Oct 5 13:32:06 EDT 2004 .
Copyright © 2004, Robert Sedgewick and Kevin Wayne.