Pagini recente » Cod sursa (job #3205762) | Cod sursa (job #554829) | Cod sursa (job #3247307) | Rating UPT upt upt (UPT_Okros_Stef_Retzler) | Cod sursa (job #2695248)
#include <stdio.h>
#define MAXN 8
#define MAXOUT (MAXN * 2 + 2)
#define NIL -1
int next[1 + MAXN];// elem 0 e santinela
char out[MAXOUT];// stiva..
int last;
FILE *fin, *fout;
void perm(){
int i, aux;
if( next[0] == NIL ){
out[last++] = '\n';
out[last++] = '\0';
fputs(out, fout);
last -= 2;
}else{
i = 0;
while( next[i] != NIL ){
out[last++] = '0' + (aux = next[i]);// adaugam la stiva
out[last++] = ' ';
next[i] = next[next[i]];// scoatem elem. din lista
perm();
next[i] = aux;// adaugam inapoi
last -= 2;// scoatem din lista
i = next[i];// trecem la urm. elem
}
}
}
int main(){
fin = fopen("permutari.in", "r");
fout = fopen("permutari.out", "w");
int n, i;
fscanf(fin, "%d", &n);
for( i = 0 ; i < n ; i++ )
next[i] = i + 1;
next[n] = NIL;
last = 0;
perm();
fclose(fin);
fclose(fout);
return 0;
}