Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.68 KB | None | 0 0
  1. /*
  2. Fabryka lodów każdego dnia produkuje na tej samej maszynie lody o sześciu różnych smakach.
  3. Zmiana produkcji ze smaku i na smak j wymaga przestrojenia maszyny, czyli przygotowania
  4. (w tym umycia) do nowej produkcji, które trwa określony czas. Podana niżej tablica zawiera
  5. informację o czasach przestrojenia maszyny.
  6. i\j
  7.      1 2 3 4 5 6
  8. 1 0 7 20 21 12 23
  9. 2 27 0 13 16 46 5
  10. 3 53 15 0 25 27 6
  11. 4 16 2 35 0 47 10
  12. 5 31 29 5 18 0 4
  13. 6 28 24 1 17 5 0
  14. Znaleźć kolejność produkcji, przy której całkowity czas przestrojenia maszyny jest minimalny. Przyjąć, że na koniec dnia maszyna ma być przygotowana do produkcji w następnym dniu.
  15.  
  16. Odp: Minimalny całkowity czas przestrojenia maszyny wynosi 63. Oto przykładowa kolejność
  17. produkcji lodów, dla której całkowity czas przestrojenia maszyny jest minimalny: 1,2,6,5,3,4,1.
  18.  
  19.  
  20. */
  21. package aisd;
  22.  
  23. public class Zad2_2_5 {
  24.  
  25.     final static int N = 6; // permutacje n-elementowe
  26.     private static int[] l = new int[N];
  27.     private static int[][] tabSmak = {{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} };
  28.     private static int[] najKomb = new int[N];
  29.     private static int najmniejszyCzas = Integer.MAX_VALUE;;
  30.     private static int czasPrzestrojenia;
  31.     private static int aktualnyCzas;
  32.    
  33.    
  34.     public static void main(String[] args) {
  35.         permutacje(0);
  36.     }
  37.    
  38.     static int liczCzas(int[] l)
  39.     {
  40.         int zliczCzas = 0;
  41.         for (int i = 0; i < l.length-2; i++)
  42.         {
  43.             zliczCzas += tabSmak[ l[i] ] [ l[i+1] ];
  44.         }
  45.         zliczCzas += tabSmak[l[l.length]][l[0]];
  46.         return zliczCzas;
  47.     }
  48.    
  49.  
  50.     static void permutacje(int i) {
  51.         if (i == N) {
  52.             for (int j = 0; j < N; j++) {
  53.                 aktualnyCzas += liczCzas(l);
  54.                     if(aktualnyCzas<najmniejszyCzas)
  55.                     {
  56.                         najmniejszyCzas = aktualnyCzas;
  57.                         for (int m = 0; m < najmniejszyCzas; m++)
  58.                         {
  59.                             najKomb[m] = l[m];
  60.                         }
  61.                     }
  62.                 System.out.print(l[j] + " ");
  63.             }
  64.             System.out.println();
  65.         }
  66.     else
  67.         {
  68.             for (int j = 1; j <= N; j++) {
  69.                 int k;
  70.                 for (k = 0; k < i; k++) {
  71.                     if (l[k] == j) {
  72.                         break;
  73.                     }
  74.                 }
  75.                 if (k == i) {
  76.                     l[k] = j;
  77.                     permutacje(i + 1);
  78.                 }
  79.             }
  80.         }  
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement