Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,26 @@
|
|||
import com.objectwave.utility.*;
|
||||
|
||||
public class MultiCombinationsTester {
|
||||
|
||||
public MultiCombinationsTester() throws CombinatoricException {
|
||||
Object[] objects = {"iced", "jam", "plain"};
|
||||
//Object[] objects = {"abba", "baba", "ab"};
|
||||
//Object[] objects = {"aaa", "aa", "a"};
|
||||
//Object[] objects = {(Integer)1, (Integer)2, (Integer)3, (Integer)4};
|
||||
MultiCombinations mc = new MultiCombinations(objects, 2);
|
||||
while (mc.hasMoreElements()) {
|
||||
for (int i = 0; i < mc.nextElement().length; i++) {
|
||||
System.out.print(mc.nextElement()[i].toString() + " ");
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
// Extra credit:
|
||||
System.out.println("----------");
|
||||
System.out.println("The ways to choose 3 items from 10 with replacement = " + MultiCombinations.c(10, 3));
|
||||
} // constructor
|
||||
|
||||
public static void main(String[] args) throws CombinatoricException {
|
||||
new MultiCombinationsTester();
|
||||
}
|
||||
} // class
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
import com.objectwave.utility.*;
|
||||
import java.util.*;
|
||||
|
||||
public class MultiCombinations {
|
||||
|
||||
private HashSet<String> set = new HashSet<String>();
|
||||
private Combinations comb = null;
|
||||
private Object[] nextElem = null;
|
||||
|
||||
public MultiCombinations(Object[] objects, int k) throws CombinatoricException {
|
||||
k = Math.max(0, k);
|
||||
Object[] myObjects = new Object[objects.length * k];
|
||||
for (int i = 0; i < objects.length; i++) {
|
||||
for (int j = 0; j < k; j++) {
|
||||
myObjects[i * k + j] = objects[i];
|
||||
}
|
||||
}
|
||||
comb = new Combinations(myObjects, k);
|
||||
} // constructor
|
||||
|
||||
boolean hasMoreElements() {
|
||||
boolean ret = false;
|
||||
nextElem = null;
|
||||
int oldCount = set.size();
|
||||
while (comb.hasMoreElements()) {
|
||||
Object[] elem = (Object[]) comb.nextElement();
|
||||
String str = "";
|
||||
for (int i = 0; i < elem.length; i++) {
|
||||
str += ("%" + elem[i].toString() + "~");
|
||||
}
|
||||
set.add(str);
|
||||
if (set.size() > oldCount) {
|
||||
nextElem = elem;
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
} // hasMoreElements()
|
||||
|
||||
Object[] nextElement() {
|
||||
return nextElem;
|
||||
}
|
||||
|
||||
static java.math.BigInteger c(int n, int k) throws CombinatoricException {
|
||||
return Combinatoric.c(n + k - 1, k);
|
||||
}
|
||||
} // class
|
||||
Loading…
Add table
Add a link
Reference in a new issue