Pagini recente » Cod sursa (job #1229515) | Cod sursa (job #2407683) | Cod sursa (job #1044260) | Cod sursa (job #2509206) | Cod sursa (job #2258160)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
typedef int stacks[100];
stacks st;
int n, k;
bool as, ev;
void init(){st[k] = 0;}
bool successor(){
if(st[k] < n){
st[k]++;
return true;
}
else return false;
}
bool valid(){
for(int i = 1; i < k; ++i){
if(st[k] == st[i]) return false;
}
return true;
}
bool sol(){return k == n;}
void print(){
for(int i = 1; i <= n; ++i) fout << st[i] << " ";
fout << "\n";
}
void backtrack(){
k = 1;
init();
while(k > 0){
as = true;
ev = false;
while(as && !ev){
as = successor();
if(as) ev = valid();
}
if(as){
if(sol()) print();
else{
k++;
init();
}
}
else k--;
}
}
int main()
{
fin >> n;
backtrack();
fin.close();
fout.close();
return 0;
}