Pagini recente » Cod sursa (job #409867) | Cod sursa (job #1277216) | Cod sursa (job #1401145) | Cod sursa (job #151874) | Cod sursa (job #1974493)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("permutari.in");
ofstream gout ("permutari.out");
vector<int> stack(100);
int level,
is,
hs,
n;
void bt();
void init();
int successor();
int valid();
int solution();
void print();
int main() {
fin>>n;
bt();
return(0);
};
void bt() {
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");
};