4165=全排列问题

 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 }

 

posted @ 2019-04-02 22:08  念文丶  阅读(254)  评论(0)    收藏  举报