Cod sursa(job #1255068)

Utilizator crucerucalinCalin-Cristian Cruceru crucerucalin Data 4 noiembrie 2014 11:56:29
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>
#include <unordered_set>


void printPerm(std::vector<int> &perm, std::ofstream &out)
{
    for (auto &i : perm)
        out << i + 1 << " ";
    out << "\n";
}

void back(std::vector<int> &perm, std::size_t pos,
          std::vector<bool> &added, std::ofstream &out)
{
    if (pos == perm.size()) {
        printPerm(perm, out);

        return;
    }

    for (std::size_t i = 0; i < perm.size(); ++i) {
        perm[pos] = i;
        if (!added[i]) {
            added[i] = true;
            back(perm, pos + 1, added, out);
            added[i] = false;
        }
    }
}

void genPerm(int N, std::ofstream &out)
{
    std::vector<int> v(N, -1);
    std::vector<bool> added(N, false);
    back(v, 0, added, out);
}

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

    int N;
    in >> N;
    in.close();

    genPerm(N, out);
    out.close();

    return 0;
}