[转载]数组的全排列问题

 申明:转自http://blog.csdn.net/wencheng2998/article/details/5971194
 1 #include <iostream> 
 2 using namespace std;
 3 int cnt = 0;//累计全排列的总数
 4 
 5 
 6 void swap(char *a, char *b)
 7 {
 8     int temp;
 9     temp = *a;
10     *a = *b;
11     *b = temp;
12 }
13 //k表示从下表为k的元素开始排列,排列的范围k到m
14 void perm(char list[], int k, int m)
15 {
16     int i;
17     if (k == m)
18     {
19         for (i = 0; i <= m; i++)
20         {
21             cout << " " << list[i];
22         }
23         cout << endl;//没输出一组排序,输出一个换行符
24         cnt++;
25     }
26     else
27     {
28         for (i = k; i <= m; i++)
29         {
30             swap(&list[k], &list[i]);
31             perm(list, k + 1, m);
32             swap(&list[k], &list[i]);
33         }
34     }
35 }
36 int main()
37 {
38     char list[] = "12345";
39     perm(list, 0, 4);
40     cout << "全排列的总数是:" <<cnt << endl;
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/-rfq/p/5924787.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值