Advertisement
blackpab

Lody

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