Combinations.java
Below is the syntax highlighted version of Combinations.java
from §2.7 Recursion.
/*************************************************************************
* Compilation: javac Combinations.java
* Execution: java Combinations N k
*
* Enumerates all subsets of size k on N elements.
* Uses some String library functions.
*
* % java Combinations 5 3
* abc
* abd
* abe
* acd
* ace
* ade
* bcd
* bce
* bde
* cde
*
*************************************************************************/
public class Combinations {
// print all subsets that take k of the remaining elements, with given prefix
public static void generate(String prefix, String elements, int k) {
if (k == 0) {
System.out.println(prefix);
return;
}
for (int i = 0; i < elements.length(); i++)
generate(prefix + elements.charAt(i), elements.substring(i + 1), k - 1);
}
// read in N and k from command line, and print all subsets of size k from N elements
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
int k = Integer.parseInt(args[1]);
String elements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
generate("", elements.substring(0, N), k);
}
}
Last updated: Tue Oct 5 13:32:06 EDT 2004
.
Copyright © 2004, Robert Sedgewick and Kevin Wayne.