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 }

 

转载于:https://www.cnblogs.com/Angfe/p/10645784.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值