排列算法

用递归实现N个不同元素的全排列。

 1 #include<iostream>
 2 inline void swap(char &a, char &b);
 3 void perm(char list[], int k, int m)
 4 {
 5     int i;
 6     if(k == m)
 7     {
 8         for(i = 0; i <= m; i++)
 9             std::cout << list[i];
10         std::cout << std::endl;
11     }
12     else
13     {
14         for(i = k; i <= m; i++)
15         {
16             swap(list[k], list[i]);
17             perm(list, k+1, m);
18             swap(list[k], list[i]);
19         }
20     }
21 }
22 inline void swap(char &a, char &b)
23 {
24     char temp = a;
25     a = b;
26     b = temp;
27 }
28 int main()
29 {
30     char list[] = {'a','b','c'};
31     perm(list, 0, 2);
32 
33     return 0;
34 }

 

posted on 2014-04-13 14:54  stackhacks  阅读(149)  评论(0编辑  收藏  举报

导航