Cod sursa(job #2192683)

Utilizator ibicecIT Zilla ibicec Data 6 aprilie 2018 21:11:26
Problema Generare de permutari Scor 60
Compilator java Status done
Runda Arhiva educationala Marime 1.38 kb
import java.io.*;
import java.util.Scanner;

public class Main {

    static PrintWriter printWriter;

    public static void main(String[] args) throws FileNotFoundException {
        Scanner scanner = new Scanner(new FileReader("permutari.in"));
        int n = scanner.nextInt();
        scanner.close();

        printWriter = new PrintWriter("permutari.out");
        generatePermutations(n);
        printWriter.close();
    }

    static int[] arr;

    static void generatePermutations(int n) {
        if (n < 1 || n > 8) {
            throw new IllegalArgumentException("invalid argument: " + n);
        }
        arr = new int[n];
        solveFor(0);
    }

    static void solveFor(int index) {
        for (int i=0; i<arr.length; i++) {
            if (alreadyUsed(i, index)) {
                continue;
            }
            arr[index] = i;
            if (index == arr.length-1) {
                printSolution();
            } else {
                solveFor(index+1);
            }
        }
    }

    static boolean alreadyUsed(int value, int upToIndex) {
        for (int i=0; i<upToIndex; i++) {
            if (arr[i] == value) {
                return true;
            }
        }
        return false;
    }

    static void printSolution() {
        for (int i=0; i<arr.length; i++) {
            printWriter.printf("%d ", arr[i]+1);
        }
        printWriter.println();
    }
}