首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

排列函数如何实现啊

2012-03-13 
排列函数怎么实现啊?假定1的排列为12的排列为12213的排列为123231312213321132那么n的排列,编程实现怎么做

排列函数怎么实现啊?
假定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);
}

热点排行