Cod sursa(job #2152258)

Utilizator CammieCamelia Lazar Cammie Data 5 martie 2018 13:15:34
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

#define MAXN 12

using namespace std;

ifstream fin("permutari.in");
ofstream fout("permutari.out");

int N, fr[MAXN], x[MAXN];

void Read() {
    fin >> N;
}

inline int cond(int k) {
    if (fr[x[k]])
        return 0;
    return 1;
}

inline void Afisare() {
    for (int i = 1; i <= N; i++)
        fout << x[i] << " ";
    fout << "\n";
}

void bkt() {
    int k = 1;

    while (k) {
        if (x[k] < N) {
            x[k]++;

            if (cond(k)) {
                if (k == N) {
                    Afisare();
                }
                else if (k < N) {
                    fr[x[k]]++;
                    k++;
                    x[k] = 0;
                }
            }
        }
        else {
            k--;
            fr[x[k]]--;
        }
    }
}

int main () {
    Read();
    bkt();

    fin.close(); fout.close(); return 0;
}