Pagini recente » Borderou de evaluare (job #1169882) | Cod sursa (job #3355329)
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
void backtracking(vector<int> &sol, vector<int> &domain, int n) {
if (n == sol.size()) {
for (int i = 0; i < n; i++)
printf("%d ", sol[i]);
printf("\n");
return;
}
for (int i = 0; i < domain.size(); i++) {
/* do */
int value = domain[i];
sol.push_back(value);
domain.erase(domain.begin() + i);
/* recursion */
backtracking(sol, domain, n);
/* undo */
sol.pop_back();
domain.insert(domain.begin() + i, value);
}
}
int main(int argc, char *argv[]) {
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
int n;
if (scanf("%d", &n) != 1)
return 0;
scanf("%d", &n);
vector<int> domain;
vector<int> sol;
for (int i = 1; i <= n; i++)
domain.push_back(i);
backtracking(sol, domain, n);
return 0;
}