Pagini recente » Cod sursa (job #999580) | Cod sursa (job #1990141) | Cod sursa (job #2523036) | Cod sursa (job #708814) | Cod sursa (job #3295693)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ofstream fout("permutari.out");
int n;
vector<int> perm; // vectorul curent
vector<bool> used; // marcăm ce elemente au fost deja folosite
// Funcție recursivă pentru generarea permutărilor
void backtrack() {
if (perm.size() == n) {
for (int x : perm)
fout << x << " ";
fout << "\n";
return;
}
// Încercăm fiecare număr de la 1 la n
for (int i = 1; i <= n; i++) {
if (!used[i]) {
perm.push_back(i); // îl adăugăm la permutare
used[i] = true; // îl marcăm ca folosit
backtrack(); // continuăm cu pasul următor
// revenim (backtrack)
perm.pop_back();
used[i] = false;
}
}
}
int main() {
ifstream fin("permutari.in");
fin >> n;
perm.reserve(n);
used.resize(n + 1, false); // folosim indexare de la 1 la n
backtrack(); // pornim generarea
return 0;
}