读书人

排列函数如何实现啊

发布时间: 2012-03-13 11:21:11 作者: rapoo

排列函数怎么实现啊?
假定1的排列为 1
2的排列为 1 2
2 1
3的排列为 1 2 3
2 3 1
3 1 2
2 1 3
3 2 1
1 3 2
那么n的排列,编程实现怎么做啊?




[解决办法]
#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);
}

读书人网 >C语言

热点推荐