Fabryka lodów-zadanie z permutacja

0

Fabryka lodów każdego dnia produkuje na tej samej maszynie lody o sześciu różnych smakach.
Zmiana produkcji ze smaku i na smak j wymaga przestrojenia maszyny, czyli przygotowania
(w tym umycia) do nowej produkcji, które trwa określony czas. Podana niżej tablica zawiera
informację o czasach przestrojenia maszyny.
i\j
1 2 3 4 5 6
1 0 7 20 21 12 23
2 27 0 13 16 46 5
3 53 15 0 25 27 6
4 16 2 35 0 47 10
5 31 29 5 18 0 4
6 28 24 1 17 5 0
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.
Odp: Minimalny całkowity czas przestrojenia maszyny wynosi 63. Oto przykładowa kolejność
produkcji lodów, dla której całkowity czas przestrojenia maszyny jest minimalny: 1,2,6,5,3,4,1.

wiem ze trzeba zmodyfikowac ten program :public class Permutacje
{
final static int N = 6; // permutacje n-elementowe
private static int[] l = new int[N];
public static void main(String[] args)
{
permutacje(0);
}
static void permutacje(int i)
{
if (i == N)
{
for(int j = 0; j < N; j++)
System.out.print(l[j] + " ");
System.out.println();
}
else
{
for (int j = 1; j <= N; j++)
{
int k;
for (k = 0; k < i; k++)
if (l[k] == j) break;
if (k == i)
{
l[k] = j;
permutacje(i+1);
}
}
}
}
}
tylko w jaki sposob? ktos pomoglby?

0

Ciężko jest to czytać taki niesformatowany tekst (patrz jak się dodaję kod źródłowy -> taki przycisk z </> ) ale podpowiem Ci.

Odpal Program i zobacz co Ci wypluwa. Zrób to a reszta jest tylko formalnością. Jeżeli to Twój kod. Jak jest to kod kolegi to niech Ci wytłumaczy jak on działa ;).

0
  1. Zły dział, pytanie z algorytmów, nie javy.
  2. Permutacje można wygenerować przy pomocy tego algorytmu: https://en.wikipedia.org/wiki/Heap%27s_algorithm
  3. Brzmi jakby to był cykl Hamiltona: https://en.wikipedia.org/wiki/Hamiltonian_path . Czyli szukając minimalnego cyklu rozwiązujesz problem komiwojażera :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1