1 #include <stdio.h> 2 #include <stdlib.h> 3 void p(int a[],int j,int m) 4 { 5 int i,t;//简单的来说就是每次都固定一个数值,然后直接固定完成最后一个开始输出。 6 if(j==m) 7 { 8 for(i=1; i<m; i++) 9 { 10 printf("%d,",a[i]); 11 } 12 printf("%d ",a[m]); 13 } 14 else 15 { 16 for(i=j; i<=m; i++) 17 { 18 t=a[j]; 19 a[j]=a[i]; 20 a[i]=t; 21 p(a,j+1,m); 22 t=a[j];//这个地方一定要将数组的数值交换回来不然整个数组全就乱了。 23 a[j]=a[i]; 24 a[i]=t; 25 } 26 } 27 } 28 int main() 29 { 30 int T,a[20],n,i; 31 while(scanf("%d",&T)!=EOF) 32 { 33 while(T--) 34 { 35 scanf("%d",&n); 36 for(i=1; i<=n; i++) 37 { 38 scanf("%d",&a[i]); 39 } 40 p(a,1,n); 41 } 42 } 43 return 0; 44 }