Pagini recente » Monitorul de evaluare | Cod sursa (job #72667) | Cod sursa (job #208834) | Cod sursa (job #2102766) | Cod sursa (job #3150895)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
const int MAX_N = 8;
void backtracking(int curr_step, int n, bool este_fol[], int permutari[]) {
// GOAL REACHED
if (curr_step == n + 1) {
for (int i = 1; i <= n; i++) {
fout << permutari[i] << ' ';
}
fout << endl;
return;
}
for (int i = 1; i <= n; i++) {
// if CHOICE is VALID
if (!este_fol[i]) {
// make choice
este_fol[i] = 1;
permutari[curr_step] = i;
backtracking(curr_step + 1, n, este_fol, permutari);
// undo choice
este_fol[i] = 0;
}
}
}
int main() {
bool este_fol[MAX_N + 1] = {0};
int permutari[MAX_N + 1];
int n;
fin >> n;
backtracking(1, n, este_fol, permutari);
return 0;
}