Pagini recente » Cod sursa (job #2753667) | Cod sursa (job #1946532) | Cod sursa (job #2460675) | Cod sursa (job #2538168) | Cod sursa (job #596293)
Cod sursa(job #596293)
#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);
perm[0] = 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;
}
}
}