2 lyn lin Lyn_Lin 于 2014.11.12 20:31 提问

请教大神:如何使全排列按从小到大的顺序输出?

现在只能输出全排列。

代码如下:

#include
int main()
{
void change(int *a,int *b,int temp);
void pai(int *num,int i,int n);
int num[10];
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;++i)
num[i]=i+1;
pai(num,0,n-1);
printf("\n");
}
return 0;

}

void change(int *a,int *b,int temp)
{
temp=*a;
*a=*b;
*b=temp;
}

void pai(int*num,int i,int n)
{
int j,temp;
void change(int *a,int *b,int temp);
if(i==n)
{
printf("(%d",num[0]);
for(j=1;j<=n;++j)
printf(", %d",num[j]);
printf(")");
}
else
{
for(j=i;j<=n;++j)
{
change(&num[i],&num[j],temp);
pai(num,i+1,n);
change(&num[i],&num[j],temp);
}
}

}

求教O(∩_∩)O

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!