Partition.java


Below is the syntax highlighted version of Partition.java from §2.3 Recursion.


/******************************************************************************
 * Compilation: javac Partition
 * Execution: java Partition N
 *
 * Print out all partitions of a positive integer N. In number theory,
 * a partition of N is a way to write it as a sum of positive integers.
 * Two sums that differ only in the order of their terms are considered
 * the same partition.
 *
 * % java Partition 4
 * 4
 * 3 1
 * 2 2
 * 2 1 1
 * 1 1 1 1
 *
 * % java Partition 6
 * 6
 * 5 1
 * 4 2
 * 4 1 1
 * 3 3
 * 3 2 1
 * 3 1 1 1
 * 2 2 2
 * 2 2 1 1
 * 2 1 1 1 1
 * 1 1 1 1 1 1
 *
 ******************************************************************************/
publicclassPartition{
publicstaticvoidpartition(int n){
partition(n, n,"");
}
publicstaticvoidpartition(int n,int max,String prefix){
if(n ==0){
 StdOut.println(prefix);
return;
}
for(int i = Math.min(max, n); i >=1; i--){
partition(n-i, i, prefix +" "+ i);
}
}
publicstaticvoidmain(String[] args){
int n = Integer.parseInt(args[0]);
partition(n);
}
}

AltStyle によって変換されたページ (->オリジナル) /


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Aug 11 10:19:56 EDT 2022.