|
发表于 2020-7-2 23:30:01
|
显示全部楼层
#include <stdio.h>
#define n 4 /*求1-n的所有排列*/
int a[n],d[n],e[n];
void main()
{
int i,q,p,k,r,total;
a[1]=1;
for(i=2;i<=n;i++)
{
a[i]=i;
d[i]=i;
e[i]=-1;
}
total=0;
s2:
q=0;
for(i=1;i<=n;i++)printf("%d ",a[i]);
printf("\n");
total+=1;
for(k=n;k>=2;k--)
{
d[k]+=e[k];
p=d[k];
if(p==k)
e[k]=-1;
else if(p==0)
{e[k]=1;q++;}
else {
p+=q;
r=a[p];
a[p]=a[p+1];
a[p+1]=r;
goto s2;
}
}
printf("total= %d\n",total);
}
|
|