Java codeimport java.util.ArrayList;
class Combination {
ArrayList _E = new ArrayList();
int _n;
int _k;
Combination(int n, int k) {
_n = n;
_k = k;
if (_k > _n || _k < 0 || _n < 0) {
_n = 0;
_k = 0;
}
int temp[] = new int[_k];
Permutation _p = new Permutation(_n, _k);
for (int i = 0; i < _p.getSize(); ++i) {
_p.getElements(i, temp);
if (isUniqueElement(temp) == true) {
ArrayList Nums = new ArrayList();
for (int j = 0; j < _k; ++j) {
Nums.add(temp[j]);
}
_E.add(Nums);
}
}
}
public int getN() {
return _n;
}
public int getK() {
return _k;
}
public void getElements(int count, int val[]) {
ArrayList temp = new ArrayList();
if (count < getSize()) {
temp = _E.get(count);
for (int i = 0; i < temp.size(); ++i) {
val[i] = temp.get(i);
}
}
}
public String toString(int count) {
ArrayList temp = new ArrayList();
temp = _E.get(count);
String result = "";
for (int i = 0; i < _k; ++i) {
result += (temp.get(i) + 1);
if (i != _k - 1)
result += ",";
}
return result;
}
public long getSize() {
long size = 0;
size = factorial(_n) / factorial(_n - _k) / factorial(_k);
return size;
}
private long factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
private boolean isUniqueElement(int val[]) {
java.util.Arrays.sort(val);
int temp[] = new int[_k];
for (int i = 0; i < _E.size(); ++i) {
getElements(i, temp);
java.util.Arrays.sort(temp);
boolean match = true;
for (int j = 0; j < temp.length; ++j) {
if (val[j] != temp[j]) {
match = false;
break;// ほんのちょっと時間節約
}
}
if (match == true)
return false;
}
return true;
}