Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -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