Pagini recente » Cod sursa (job #1842178) | Cod sursa (job #2231385) | Cod sursa (job #2569388) | Cod sursa (job #2945713) | Cod sursa (job #1457565)
#include <fstream>
#include <iostream>
using namespace std;
///// DESCRIPTION
// THIS PROGRAM FINDS ALL PERMUTATIONS
// OF NUMBERS BETWEEN 1 AND n
// BY USING BACKTRACKING
/////
void permutations(ostream&, int, int[], bool[], int);
void output(ostream&, int[], int);
int main(int argc, char **argv)
{
// INPUT
int n;
ifstream indata("permutari.in");
indata >> n;
indata.close();
// GENERATION AND OUTPUT OF PERMUTATIONS
ofstream outdata("permutari.out");
freopen("permutari.out", "w", stdout);
int stack[n]; bool used[n];
for (int i = 0; i < n; i++) {
used[i] = false;
}
permutations(outdata, n, stack, used, 0);
outdata.close();
return 0;
}
void permutations(ostream& outdata, int n, int stack[], bool used[], int step) {
for (int i = 1; i <= n; i++) {
if (used[i] == true) {
continue;
}
stack[step] = i;
used[i] = true;
if (step < n-1) {
permutations(outdata, n, stack, used, step+1);
} else {
printf("1\n");
//output(outdata, stack, n);
}
used[i] = false;
}
}
void output(ostream& outdata, int permutation[], int n) {
for (int i = 0; i < n; i++) {
outdata << permutation[i] << " ";
}
outdata << "\n";
}