字符串的全排列

     全排列是面试中常考的算法,博主前不久参加某知名互联网公司的面试,面试观要求写出全排列的算法,由于博主能力有限,结果跪。全排列可采用递归的方法也可以采用非递归的方法。下面介绍递归的方法:

 1 #include <iostream>  
 2 #include <string>  
 3 using namespace std;
 4 
 5 bool exchangeable(string &s, int begin, int end) 
 6 {
 7     if (s[begin] == s[end]) 
 8     {
 9         return false;
10     }
11     return true;
12 }
13 
14 void arrange(string &s, int begin)
15 {
16     if (begin == s.length()) //递归结束条件
17     {
18         cout << s << endl;
19     }
20     else
21     {
22         for (int i = begin; i < s.length(); i++) //进行递归
23         {
24             if (i==begin||exchangeable(s, begin, i))
25             {
26                 swap(s[begin], s[i]);
27                 arrange(s, begin + 1);
28                 swap(s[begin], s[i]);
29             }
30         }
31     }
32 }
33 
34 int main()
35 {
36     string a = "1123";
37     arrange(a, 0);
38     return 0;
39 }
原文地址:https://www.cnblogs.com/wangshujing/p/6811133.html