Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bslody2;
- public class BSLody2 {
- static final int LICZBASMAKOW = 6;
- private static int[] przejsciowaTablicaKolejnosci = new int[LICZBASMAKOW];
- private static int[] koncowaTablicaKolejnosci = new int[LICZBASMAKOW];
- private static int minimalnyCzasPrzestrojenia = Integer.MAX_VALUE;
- final static int[][] tablicaCzasuZmianySmakow = {
- {0, 7, 20, 21, 12, 23},
- {27, 0, 13, 16, 46, 5},
- {53, 15, 0, 25, 27, 6},
- {16, 2, 35, 0, 47, 10},
- {31, 29, 5, 18, 0, 4},
- {28, 24, 1, 17, 5, 0}};
- static void permutacje(int i) {
- //Jesli w else tak poprzestawialismy przejsciowaTablicaKolejnosci ze utworzylismy jeszcze niewykorzystana kombinacje smakow to liczymy minimalnyCzasPrzestrojenia tejze kombinacji
- if (i == LICZBASMAKOW) {
- int czasPrzestrojenia = czasPrzestrojenia(przejsciowaTablicaKolejnosci); //czyli liczymy sobie czas przestrojenia zadanej kombinacji smakow dzieki funkcji ktora to oblicza
- if (minimalnyCzasPrzestrojenia > czasPrzestrojenia) {
- minimalnyCzasPrzestrojenia = czasPrzestrojenia;
- for (int k = 0; k < LICZBASMAKOW; k++) {
- koncowaTablicaKolejnosci[k] = przejsciowaTablicaKolejnosci[k];
- }//ta petla po prostu do koncowej koncowejTablicyKolejnosci przypisuje aktualnie najlepsza kombinacje smakow z przejsciowejTablicyKolejnosci
- }
- } else { //Ten kod odpowiada za zmiane kombinacji smakow w przejsciowaTablicyKolejnosci
- for (int j = 0; j < LICZBASMAKOW; j++) { //odpowiada za przypisanie smaku do kazdego el
- int k;
- for (k = 0; k < i; k++) { //
- if (przejsciowaTablicaKolejnosci[k] == j) { //zapewne dba o to zeby kombinacje sie nie powtarzaly
- break;
- }
- } //po wyjsciu z tej petli k ma pewna wartosc
- if (k == i) {
- przejsciowaTablicaKolejnosci[k] = j; //przypisujemy unikalna wartosc
- permutacje(i + 1);
- }
- }
- }
- }
- static int czasPrzestrojenia(int[] przejsciowaTablicaKolejnosci2) {
- int czasPrzestrojenia = 0; //Na poczatku rowny 0 bo maszyna dopiero startuje
- //Petla ktora liczy czas przestrojenia na podstawie przejsciowej Tablicy kolejnosci
- for (int k = 0; k < LICZBASMAKOW - 1; k++) {
- int i = przejsciowaTablicaKolejnosci2[k]; //uzyskamy indeksy przejscia ze smaku o indeksie k
- int j = przejsciowaTablicaKolejnosci2[k + 1]; //do smaku o indeksie k + 1 //Maksimum przejscia to z 5 - 6 ograniczenie LICZBASMAKOW-1
- czasPrzestrojenia = czasPrzestrojenia + tablicaCzasuZmianySmakow[i][j]; //do aktualnego czasu przestrojenia dodajemy czas powstaly podczas zmiany smakow
- }
- return czasPrzestrojenia + tablicaCzasuZmianySmakow[przejsciowaTablicaKolejnosci2[LICZBASMAKOW - 1]][przejsciowaTablicaKolejnosci2[0]];
- //dodajemy do czasu Przestrajania czas przestrojenia ostatniego elementu z pierwszym[warunki zadania = maszyna ma byc gotowa do pracy nastepnego dnia]
- }
- public static void main(String[] args) {
- permutacje(0);
- System.out.println("Czas to: " + minimalnyCzasPrzestrojenia);
- System.out.print("Kombinacja:");
- for (int i = 0; i < LICZBASMAKOW; i++) {
- System.out.print(" " + (koncowaTablicaKolejnosci[i] + 1));
- }
- System.out.println(" " + (koncowaTablicaKolejnosci[0] + 1));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement