Cod sursa(job #2702679)

Utilizator vnedelcuVictor Andrei Nedelcu vnedelcu Data 5 februarie 2021 14:25:26
Problema Generare de permutari Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#include <string>
#include <vector>

using namespace std;

class PermWriter {
private:
    vector<int> used;
    vector<int> perm;
    int n;
    ofstream fout;
    void helper(int crnt_perm_pos);

public:
    void write_perms_to_file(int n, string file_name);
};

void PermWriter::write_perms_to_file(int n, string file_name) {
    this->n = n;
    used.resize(n);
    perm.resize(n);
    fout.open(file_name);
    helper(0);
    fout.close();
}

void PermWriter::helper(int crnt_perm_pos) {
    if (crnt_perm_pos == n) {
        for (int i = 0; i < n; i++) {
            fout << perm[i] << " ";
        }
        fout << endl;
        return;
    }

    for (int value = 1; value <= n; value++) {
        if (!used[value - 1]) {
            perm[crnt_perm_pos] = value;
            used[value - 1] = true;
            helper(crnt_perm_pos + 1);
            used[value - 1] = false;
        }
    }
}

int main() {
    int n;
    ifstream fin("permutari.in");
    fin >> n;
    fin.close();

    PermWriter permWriter;
    permWriter.write_perms_to_file(n, "permutari.out");

    return 0;
}