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\n",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 }