import java.util.Arrays;
public class Generator {
int[] mnozina;
int[] variacia;
int pocet;
public void variacieSOpakovanim(int k, int[] mnozina) {
this.mnozina = mnozina;
variacia = new int[k];
variacieSOpakovanim(k, 0);
}
private void variacieSOpakovanim(int k, int idx) {
if (k == idx) {
vypis();
return;
}
for (int i = 0; i < mnozina.length; i++) {
variacia[idx] = mnozina[i];
variacieSOpakovanim(k, idx + 1);
}
}
public void variacieBezOpakovania(int k, int[] mnozina) {
this.mnozina = mnozina;
variacia = new int[k];
boolean[] hodnoty = new boolean[mnozina.length];
Arrays.fill(hodnoty, false);
variacieBezOpakovania(k, 0, hodnoty);
}
private void variacieBezOpakovania(int k, int idx, boolean[] hodnoty) {
if (k == idx) {
vypis();
return;
}
for (int i = 0; i < mnozina.length; i++) {
if (hodnoty[i])
continue;
hodnoty[i] = true;
variacia[idx] = mnozina[i];
variacieBezOpakovania(k, idx + 1, hodnoty);
hodnoty[i] = false;
}
}
private void vypis() {
pocet++;
System.out.println(Arrays.toString(variacia));
}
public static void main(String[] args) {
int[] mnozina = { 1, 2, 3 };
Generator g = new Generator();
g.variacieSOpakovanim(5, mnozina);
System.out.println();
System.out.println("Pocet = " + g.pocet);
}
}