Cod sursa(job #2884514)

Utilizator BarbuDragosBarbu Dragos BarbuDragos Data 3 aprilie 2022 21:05:52
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;

void print_output(int k, int res[], ofstream &out) {
    for (int i = 1; i <= k; i++)
        out << res[i] << ' ';
    out << '\n';
}

bool valid(int k, int res[]) {
    for (int i = 1; i < k; i++)
        if (res[k] == res[i])
            return false;
    return true;
}

void solve(int k, int n, int res[], ofstream &out) {
    for (int i = 1; i <= n; i++) {
        res[k] = i;
        if (valid(k, res))
            if (k == n) print_output(k, res, out);
            else solve(k + 1, n, res, out);
    }
}

void jmekerie(int n, ofstream &out) {
    vector<int> res;

    for (int i = 0; i < n; i++) {
        res.push_back(i + 1);
    }

    do {
        for (int i = 0; i < n; i++) {
            out << res[i] << ' ';
        }
        out << '\n';
    } while (next_permutation(res.begin(), res.end()));
}

int main() {
    ifstream in("permutari.in");
    ofstream out("permutari.out");

    int n;
    in >> n;
    int res[n + 1];

    //jmekerie(n, out);
    solve(1, n, res, out);
    in.close();
    out.close();
    return 0;
}