c语言,递归1~n按字典顺序全排列

#include<stdio.h>
int n;
int a[100];
int main()
{
void print();
void pai(int m);
int i;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
a[i]=i;
}

pai(1);
printf("\n");
}
return 0;
}
void pai(int m)
{
void print();
void change(int i,int j);
int i;
if(m==n)
{ printf("(");
print();
printf("%d)",a[n]);
return;
}
for(i=m;i<=n;i++)
{
change(i,m);
pai(m+1);
change(i,m);
}
}

void change(int i,int j)
{
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}

void print()
{
int i;
for(i=1;i<n;i++)
{
printf("%d, ",a[i]);
}
}

我的代码3以后顺序就有问题,请问该怎么改
输出格式是(1,2,3)(1,3,2)这样的

第1个回答  2016-11-22
#includevoidswap(char&a,char&b,charc){c=a;a=b;b=c;}voidperm(char*list,inti,intn){intj,temp;if(i==n){for(j=0;j<=n;j++)printf("%c",list[j]);printf("");}else{for(j=i;j<=n;j++){swap(list[i],list[j],temp);perm(list,i+1,n);swap(list[i],list[j],temp);}}}voidmain(){charlist[3]={'A','B','C'};perm(list,0,2);}
相似回答