Przygotowując sie do kolokwium musze zrobic to zadanie na przykladzie programu z wykladu. Problem w tym ze nie rozumie tego algorytmu (w Java).

Tresc w załączniku.

A tutaj przyklad z wykladów.

public class ASID_Lab3Zad1 {

    final static int N = 3;
    /*
* tablica reprezentujaca liste elementow
     */
    private static int[] lista = new int[N];

    static void permutacje(int i) {
        /*
* Wypisanie permutacji w przypadku gdy lista wypelniona jest elementami -
* znaleziono jeden ze stanow koncowych
         */
        if (i == N) {
            for (int j = 0; j < N; j++) {
                System.out.print(lista[j] + " ");
            }
            System.out.println();
        } else {
//Dla kazdego elementu ze zbioru {1,...,N}
            for (int j = 1; j <= N; j++) {
                int k;
//Dla aktualnej listy elementow o dlugosci "i"
                for (k = 0; k < i; k++) {
                    /*
* Sprawdzenie, czy element "j" znajduje sie na liscie
* jeśli tak, to przejscie do kolejnego stanu (czyli dodanie
* elementu na koniec listy) nie bedzie mozliwe - petla zostanie
* przerwana, wartosc "k" nie zrowna sie z wartoscia "i"
                     */
                    if (lista[k] == j) {
                        break;
                    }
                }
                /*
* Jesli warunek jest spelniony to znaczy, ze jest mozliwe przejscie
* do kolejnego stanu (element j dodawany jest na koniec listy)
                 */
                if (k == i) {
                    lista[k] = j;
                    permutacje(i +1);
                }
            }
        }
    }

    public static void main(String[] args) {
       permutacje(0);
    }

}