>>930 100個は無理。 #include<stdio.h> #include<string.h> #define M 10 unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;} void retuprt(unsigned int *x){for(int n=0;n<M;n++)printf("%d ",x[n]);} unsigned int sanowa(unsigned int *x){unsigned int s=0,n; for(n=0;n<M-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]>x[n+1];return s;}
main(){ unsigned int i,j,k; unsigned int orgnum[M],num[M],jretu[M]; for(i=0; i<M; i++) orgnum[i]=i+1; int max=0; unsigned int maxretu[M]; for(k=0;k<kaijyo(M);k++){ memcpy(num,orgnum,4*M); int N=k; for(i=M;i>=1;i--) { int n=N % i; jretu[i-1]=num[n]; for(j=n;j<i-1;j++) num[j]=num[j+1]; N/=i;} i=sanowa(jretu); if(max<i){max=i;memcpy(maxretu,jretu,4*M);} } retuprt(maxretu); printf(" max=%d\n",max); }