Pagini recente » Cod sursa (job #236474) | Cod sursa (job #2040752) | Istoria paginii runda/cls_9_simulare_oji | Clasament dupa rating | Cod sursa (job #2702679)
#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;
}