Pagini recente » Istoria paginii runda/winners14.1 | Cod sursa (job #1040964) | Cod sursa (job #245551) | Cod sursa (job #473384) | Cod sursa (job #1974490)
#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) {
hs = 1; is = 0;
while(hs && !is) {
hs = successor();
if(hs) is = 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");
};