Cod sursa(job #2379250)

Utilizator RaresLiscanLiscan Rares RaresLiscan Data 13 martie 2019 10:58:51
Problema Generare de permutari Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int fr[20];

vector <int> v;

void afisare ()
{
    for (int i = 0; i < n; i ++) fout << v[i] << " ";
    fout << "\n";
}

bool verificare ()
{
    if (v.size() != n) return 0;
    bool ok = 1;
    for (int i = 0; i < n; i ++) {
        if (fr[v[i]] == 0) fr[v[i]] ++;
        else ok = 0;
    }
    for (int i = 1; i <= n; i ++) fr[i] = 0;
    return ok;
}

void bkk ()
{
    int k = v.size();
    if (verificare()) {
        afisare();
        v.pop_back();
        return;
    }
    if (v.size() == n) {
        v.pop_back();
        return;
    }
    for (int i = 1; i <= n; i ++) {
        v.push_back(i);
        bkk();
    }
    v.pop_back();
}

int main()
{
    fin >> n;
    bkk();
    return 0;
}