数组的全排列问题

Posted 一步一步往上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的全排列问题相关的知识,希望对你有一定的参考价值。

 申明:转自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 }

 

以上是关于数组的全排列问题的主要内容,如果未能解决你的问题,请参考以下文章

字符串的全排列

全排列

求n个数的全排列,n不定。用c语言。用于银行家算法中求安全序列

字符数组的全排列

字符串数组的全排列——数组

leetcode Add to List 31. Next Permutation找到数组在它的全排列中的下一个