Pagini recente » Cod sursa (job #92761) | Cod sursa (job #2527483) | Cod sursa (job #1272996) | Cod sursa (job #404028) | Cod sursa (job #597354)
Cod sursa(job #597354)
#include <stdio.h>
#define Nmax 1000
int N,i,k,total,r,crt,ok=1, gen[Nmax], v[9];
int verificare (void)
{
for (i=1; i<=N; i++) v[i]=0;
for (i=1; i<=N; i++) v[gen[i]]++;
ok=1;
for (i=1; i<=N && ok; i++) if (v[i]!=1) ok=0;
return ok;
}
void incrementare (void)
{
r=1;
i=N;
while (r)
{
crt=gen[i]+1;
gen[i]=crt%(N+1);
if (!gen[i]) gen[i]=1;
r=crt/(N+1);
i--;
}
}
int main () {
FILE *f;
f=fopen("permutari.in", "r");
fscanf(f, "%d", &N);
fclose(f);
FILE *g;
g=fopen("permutari.out", "w");
total=1;
for (i=2; i<=N; i++) total*=i;
for (i=1; i<=N; i++) {gen[i]=i; fprintf(g, "%d ", i);}
fprintf(g, "\n");
for (k=2; k<=total; k++)
{
do incrementare(); while (!verificare());
for (i=1; i<=N; i++) fprintf(g, "%d ", gen[i]);
fprintf(g, "\n");
}
fclose(g);
return 0;
}