• 字符串的全排列


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

     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 }
  • 相关阅读:
    sed&awk 资料汇总 全是链接
    LeetCode Path 3Sum
    C++ mem_fun
    递归绑定
    查询当天数据
    清除script注入
    防注入查询
    我的最新分页
    群发邮件
    利用缓存
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6811133.html
Copyright © 2020-2023  润新知