import java.lang.reflect.Array;
import java.util.Arrays;
public class Generator {
/**
* Pole, v ktorom generujeme postupnost
*/
private int[] pole;
private int najmensiRozdiel = Integer.MAX_VALUE;
private int[] najlepsiVyber = { 0, 0, 0, 0, 0, 0 };
private int[] ceny = { 90, 20, 30, 1, 1, 50 };
public int[] getPole() {
return pole;
}
public void setPole(int[] pole) {
this.pole = pole;
}
/**
* Spracuje hodnoty v postupnosti - vypise ich
*/
private void vypis() {
System.out.println(Arrays.toString(pole));
}
/**
* Generuje variacie s opakovanim v podpoli pocnuc indexom odIndexu
*/
private void generuj(int odIndexu, int[] mnozina) {
if (odIndexu == pole.length) {
spracuj(pole);
// vypis();
return;
}
for (int i = 0; i < mnozina.length; i++) {
pole[odIndexu] = mnozina[i];
generuj(odIndexu + 1, mnozina);
// Eventualne mozeme vratit obsah pola do povodneho stavu - ale je
// to zbytocne...
// pole[odIndexu] = 0;
}
}
public int[] spracuj(int[] pole) {
int prvy = 0;
int druhy = 0;
for (int i = 0; i < pole.length; i++) {
if (pole[i] == 1) {
prvy += ceny[i];
} else
druhy += ceny[i];
}
if (najmensiRozdiel > Math.abs(prvy - druhy)) {
najmensiRozdiel = Math.abs(prvy - druhy);
najlepsiVyber = pole.clone();
}
return najlepsiVyber;
}
/**
* Nastartuje generovanie
*/
public int[] generuj(int[] mnozina) {
generuj(0, mnozina);
return najlepsiVyber;
}
public Generator(int k) {
pole = new int[k];
}
public static void main(String[] args) {
Generator g = new Generator(6);
int[] mnozina = { 1, 0 };
System.out.println(Arrays.toString(g.generuj(mnozina)));
}
}