C言語で0からNmaxの順列を作るプログラムです。もしくは1からNmaxも同じ容量です。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define Nmax 4
int main(){
int t,c[Nmax+1],a[Nmax+1],i,j,k;
/*
for(t=0;t<=200;t++){
for(i=0;i<=Nmax;i++){
c[i]=i;
}
for(j=0;j<=Nmax;j++){
i=rand() % (Nmax+1-j);
a[j]=c[i];
for(k=i;k<=Nmax+1-j;k++){
c[k]=c[k+1];
}
}
printf("\n%ld\t",t);
for(j=0;j<=Nmax;j++){
printf("%ld",a[j]);
}
}
printf("\n");*/
for(t=1;t<=200;t++){
for(i=1;i<=Nmax;i++){
c[i]=i;
}
for(j=1;j<=Nmax;j++){
i=rand() % (Nmax+1-j) +1;
a[j]=c[i];
for(k=i;k<=Nmax+1-j;k++){
c[k]=c[k+1];
}
}
printf("\n%ld\t",t);
for(j=1;j<=Nmax;j++){
printf("%ld",a[j]);
}
}
}
これ以上軽いプログラムを考えているのですが、どうもアイディアが浮かびません。だれかおしえてもらえませんかぁ。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define Nmax 4
int main(){
int t,c[Nmax+1],a[Nmax+1],i,j,k;
/*
for(t=0;t<=200;t++){
for(i=0;i<=Nmax;i++){
c[i]=i;
}
for(j=0;j<=Nmax;j++){
i=rand() % (Nmax+1-j);
a[j]=c[i];
for(k=i;k<=Nmax+1-j;k++){
c[k]=c[k+1];
}
}
printf("\n%ld\t",t);
for(j=0;j<=Nmax;j++){
printf("%ld",a[j]);
}
}
printf("\n");*/
for(t=1;t<=200;t++){
for(i=1;i<=Nmax;i++){
c[i]=i;
}
for(j=1;j<=Nmax;j++){
i=rand() % (Nmax+1-j) +1;
a[j]=c[i];
for(k=i;k<=Nmax+1-j;k++){
c[k]=c[k+1];
}
}
printf("\n%ld\t",t);
for(j=1;j<=Nmax;j++){
printf("%ld",a[j]);
}
}
}
これ以上軽いプログラムを考えているのですが、どうもアイディアが浮かびません。だれかおしえてもらえませんかぁ。