zoukankan      html  css  js  c++  java
  • 字符全排列

    问题一:对字符串s,输出字符串S中字符的所有排列。例如:输入字符串"abc",其全排列是abc,acb,bac,bca,cab,cba;

    方法一:这是一个深度优先搜索的过程。

    void dfs(vector<string> &result,string & path,string s,int len)
    {
        if(len==s.size())
        {
            result.push_back(path);
            return;
        }
        for(int i=0;i<s.size();i++)
        {
            if(path.find(s[i])==-1)
            {
                path.push_back(s[i]);
                dfs(result,path,s,len+1);
                path.pop_back();
            }
        }
    }
    int main()
    {
        string str="abc";
        vector<string> result;
        string path;
        dfs(result,path,str,0);
    }

    方法二:递归的过程:首先求所有可能出现在第一个位置的字符,也就是把第一个字符与后面的所有字符交换。其次,固定第一个字符,求后面字符的全排列,也就是把第二个字符与后面的所有字符交换。一直递归下去。

    void permutation(char *s,char *sbegin)
    {
        if(*sbegin=='')
            cout<<s<<endl;
        else
        {
            for(char *p=sbegin;*p!='';p++)
            {
                swap(*sbegin,*p);
                permutation(s,sbegin+1);
                swap(*sbegin,*p);
            }
        }
    }
    int main()
    {
        char s[]="abc";
        permutation(s,s);
    }

  • 相关阅读:
    python编码问题和py2和py3的不同
    day27
    多继承补充
    zoj3820 Building Fire Stations 树的中心
    DLX舞蹈链 hdu5046
    时间复杂度
    线性求中位数 poj2388
    codeforce447 D SGU 548 贪心+优先队列
    hdu4864 hdu4268 贪心 lower_bound
    zoj3672 Gao The Sequence
  • 原文地址:https://www.cnblogs.com/beaglebone/p/5878267.html
Copyright © 2011-2022 走看看