Pagini recente » Cod sursa (job #3154968) | Cod sursa (job #2240719) | Cod sursa (job #1829249) | Cod sursa (job #302879) | Cod sursa (job #596295)
Cod sursa(job #596295)
#include <stdio.h>
#define MAX_N 10
int N;
FILE* in;
FILE* out;
void print(int perm[]) {
int i;
for (i = 0; i < N; i++) {
fprintf(out, "%d ", perm[i]);
}
fprintf(out, "\n");
}
int valid(int k, int perm[]) {
int i;
for (i = 0; i < k; i++) {
if (perm[i] == perm[k]) return 0;
}
return 1;
}
int main()
{
int perm[MAX_N];
int i, k = 0;
int backtrack;
in = fopen("permutari.in", "rt");
out = fopen("permutari.out", "wt");
fscanf(in, "%d", &N);
for (i = 0; i < N; i++) perm[i] = 0;
while (k >= 0) {
do {
backtrack = (++perm[k] > N);
} while (!valid(k, perm) && !backtrack);
if (backtrack) --k;
else {
if (k == N-1) print(perm);
else perm[++k] = 0;
}
}
return 0;
}