Cod sursa(job #2637999)

Utilizator alex.livadaruLivadaru Alexandru alex.livadaru Data 26 iulie 2020 13:04:10
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <vector>
#include <map>
#include <fstream>
using namespace std;

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

void printSol(vector<int> &solution) {
    for (int i = 0; i < solution.size(); ++i) {
        fout << solution[i] << " ";
    }
    fout << "\n";
}

void back(int step, int stop,
vector<int> &domain, vector<int> &solution,
map<int, bool> &visited) {
    if (step == stop) {
        printSol(solution);
        return;
    }

    for (int i = 0; i < domain.size(); ++i) {
        if (!visited[domain[i]]) {
            visited[domain[i]] = 1;

            solution[step] = domain[i];

            back(step + 1, stop, domain, solution, visited);

            visited[domain[i]] = 0;
        }
    }

}

int main() {
    int n;
    fin >> n;
    fin.close();

    vector<int> domain(n), solution(n);
    map<int, bool> visited;

    for (int i = 0; i < n; ++i) {
        domain[i] = i + 1;
        visited.insert({domain[i], 0});
    }

    back(0, n, domain, solution, visited);

    fout.close();
    
    return 0;
}