Cod sursa(job #2548681)

Utilizator matthriscuMatt . matthriscu Data 16 februarie 2020 21:39:01
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
using namespace std;

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

int n, sol[10];

void succesor(int k, int &as) {
    as = 0;
    if(sol[k] < n) {
        sol[k]++;
        as = 1;
    }
}

void valid(int k, int &ev) {
    ev = 1;
    for(int i = 1; i < k; ++i)
        if(sol[i] == sol[k])
            ev = 0;
}

void tipar() {
    for(int i = 1; i <= n; ++i)
        fout << sol[i] << ' ';
    fout << '\n';
}

void back() {
    int k = 1, ev, as;
    sol[1] = 0;
    while(k) {
        do {
            succesor(k, as);
            if(as)
                valid(k, ev);
        } while(as && !ev);
        if(as)
            if(k == n)
                tipar();
            else {
                k++;
                sol[k] = 0;
            }
        else
            k--;
    }
}

int main() {
    fin >> n;
    back();
}