Pagini recente » Cod sursa (job #2631586) | Cod sursa (job #2966690) | Cod sursa (job #1400105) | Cod sursa (job #2329395) | Cod sursa (job #505100)
Cod sursa(job #505100)
#include <stdio.h>
void next_permutation (short *,short);
int main () {
FILE *in,*out;
short N,a[12]={1,2,3,4,5,6,7,8,0},i; long n=1;
in=fopen ("permutari.in","r"); out=fopen ("permutari.out","w");
fscanf (in,"%hd",&N);
for (i=1; i<=N; i++) {
a[i]=i;
n*=i;
}
a[N+1]=0;
for (i=1; i<N; i++) fprintf (out,"%hd ",a[i]);
fprintf (out,"%hd\n",a[N]);
while (n-1) {
next_permutation (a,N);
for (i=1; i<N; i++) fprintf (out,"%hd ",a[i]);
fprintf (out,"%hd\n",a[N]);
n--;
}
fclose (in); fclose (out);
return 0;
}
void next_permutation (short *a,short N) {
int i=N,j,L,k;
while (a[i]<a[i-1]) i--;
L=i;
k=(L+N+1)/2;
while (a[i]>a[L-1]) i++;
j=a[L-1]; a[L-1]=a[i-1]; a[i-1]=j;
for (i=0; L+i<k; i++) {
j=a[L+i]; a[L+i]=a[N-i]; a[N-i]=j;
}
}