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.