Pagini recente » Cod sursa (job #3287408) | Cod sursa (job #1422167) | Cod sursa (job #2867606) | Cod sursa (job #2477785) | Cod sursa (job #2388824)
#include <fstream>
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
ofstream fout("permutari.out");
class Permutari {
public:
void solve() {
read_input();
vector<int> domeniu, solutie;
domeniu.reserve(n);
int i;
for (i = 0; i < n; i++) {
domeniu.push_back(i + 1);
}
perm(domeniu, solutie);
}
private:
int n;
void read_input() {
ifstream fin("permutari.in");
fin >> n;
fin.close();
}
bool printSol(vector<int> &solutie) {
for (int s : solutie) {
fout << s << " ";
}
fout << endl;
}
void perm(vector<int> &domeniu, vector<int> &solutie) {
// daca domeniul e gol, atunci am generat toate solutiile
if (domeniu.size() == 0) {
printSol(solutie);
return;
}
unsigned int i;
for (i = 0; i < domeniu.size(); i++) {
// retin elementul din domeniu
int temp = domeniu[i];
// il adaug in solutie
solutie.push_back(temp);
// sterg elementul din domeniu
domeniu.erase(domeniu.begin() + i);
// reapelez functia cu noua solutie, respectiv domeniu
perm(domeniu, solutie);
// refac domeniul si solutia
domeniu.insert(domeniu.begin() + i, temp);
solutie.pop_back();
}
}
};
int main() {
Permutari perms;
perms.solve();
return 0;
}