Pagini recente » Cod sursa (job #1388247) | Cod sursa (job #821624) | Cod sursa (job #1974597) | Cod sursa (job #1730980) | Cod sursa (job #1974494)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("permutari.in");
ofstream gout ("permutari.out");
vector<int> stack(100);
int level,
n;
void bt();
void init();
int successor();
int valid();
int solution();
void print();
int main() {
fin>>n;
bt();
return(0);
};
void bt() {
int hs;
level = 1;
init();
while(level > 0) {
do{}while((hs=successor()) && !valid());
if(hs) {
if(solution()) print();
else
{level++;init();}
} else
level--;
}
};
void init() {
stack[ level ] = 0;
};
int successor() {
if(stack[level] < n) {
stack[level] = stack[level] + 1;
return 1;
} else {
return 0;
}
};
int valid() {
int i;
for(i = 1; i < level; i++) {
if(stack[i] == stack[level]) return 0;
}
return 1;
};
int solution() {
return level == n;
};
void print() {
int i;
for(i = 1; i <= n; i++) gout<<stack[i]<<" ";
printf("\n");
};