美文网首页
【OJ】亚信2017校招编程题

【OJ】亚信2017校招编程题

作者: 月下独钓 | 来源:发表于2017-10-30 19:29 被阅读0次

【题目】string的全排列

【思路】用交换法产生全排列,因为是全排列,所以时间复杂度是阶乘

【代码】

#include<iostream>
#include<string>
#include<vector> 

using namespace std;
vector<string> combine(const string& data) {
        vector<string> ans;
        ans.push_back(data);
        int len = data.length();
        
        for(int i=0;i<=len-2;i++)
        {
            int listnum = ans.size();
            vector<string> anstemp;
            for(int k=0;k < listnum;k++)
            {
                for(int j=i+1;j<=len-1;j++)
                {
                    string temp = ans[k];
                    char ch  = temp[i];
                    temp[i] = temp[j];
                    temp[j] = ch;
                    anstemp.push_back(temp);
                }
            }
            
            ans.insert(ans.end(),anstemp.begin(),anstemp.end());
        }
        return ans;
    }

int main()
{
    vector<string> test;
    test = combine("abc");
    
    cout<<test.size()<<endl;
    /*for(int i=0;i<test.size();i++)
    {
        cout<<test[i]<<endl;
    }*/
}

相关文章

网友评论

      本文标题:【OJ】亚信2017校招编程题

      本文链接:https://www.haomeiwen.com/subject/koempxtx.html