C语言,关于全排列问题#includevoid swap(int A,int B){\x09int
网友回答
#include<stdio.h>
void swap(int *A,int *B) // <-- C语言是传值的,*A 才能影响到外部.
{int m;
m=*A;
*A=*B;
*B=m;
}int main()
{int a[10];
int n,i,j,k,l,isgood;
scanf("%d",&n);
for(i=0;i<n;a[i]=i+1,i++);
for(i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
for(i=0,j=0;;){
for(k=n-2,isgood=1;k>=0;k--){
if(a[k]<a[k+1]){
isgood=0;
i=k;
break;
}}if(isgood==1) break;
for(l=i;l<n;l++){
for(j=n-1;j>l;j--)
if(a[j]>a[l]) swap(&a[l],&a[j]);//<-- 相应修改.
}for(l=0;l<n;l++) printf("%d ",a[l]);printf("\n");}return 0;}