zadanie permutacje

0

Witam, mam za zadanie przerobić ten kod w javie tak aby rozwiązywał to zadanie.

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.
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.
Tabela wartości znajduje sie w załączniku.

public class produkcja {

    final static int N = 3![title]; // 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);
                }
            }
        }
    }
}

Nie wiem w jaki sposób należy zliczyć poszczególne czasy przestrojenia oraz jak dodać na końcu 7 element, który jest początkiem kolejnego dnia

0

Proponuję zrobić tablice dwuwymiarową, w której będą czasy przezbrojeń maszyny. Z takiej bezpośrednio odczytasz czas zmiany smaku z I na J.

Na początku sumę czasów przyjmujesz na 1000000 i zapamiętujesz w zmiennej S.
Jak generujesz permutacje, to potem do każdego elementu określasz czas przezbrojenia z danego elementu do następnego, a z ostatniego do pierwszego.

Jeżeli suma czasów jest mniejsza od S, to zapisujesz ją w zmiennej S i zapamiętujesz konkretną permutację, przy której uzyskałeś daną sumę.

Po sprawdzeniu wszystkich permutacji wypisujesz S i zapamiętaną permutację. Będzie to najmniejsza suma czasów i najkorzystniejsza kolejność produkcji.

0
andrzejlisek napisał(a):

Proponuję zrobić tablice dwuwymiarową, w której będą czasy przezbrojeń maszyny. Z takiej bezpośrednio odczytasz czas zmiany smaku z I na J.

Na początku sumę czasów przyjmujesz na 1000000 i zapamiętujesz w zmiennej S.
Jak generujesz permutacje, to potem do każdego elementu określasz czas przezbrojenia z danego elementu do następnego, a z ostatniego do pierwszego.

Jeżeli suma czasów jest mniejsza od S, to zapisujesz ją w zmiennej S i zapamiętujesz konkretną permutację, przy której uzyskałeś daną sumę.

Po sprawdzeniu wszystkich permutacji wypisujesz S i zapamiętaną permutację. Będzie to najmniejsza suma czasów i najkorzystniejsza kolejność produkcji.

Udało mi się to jakoś rozwiązać :) dzięki za naprowadzenie

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