How to generate all permutations of an array in sorted order?

前端 未结 6 1975
挽巷
挽巷 2020-11-29 04:48

I have an array, and the user can insert a string.

And I have this code:

int main(){
  char anagrama[13];
  cin >> anagrama;
  for(int j = 0; j         


        
6条回答
  •  醉话见心
    2020-11-29 05:26

    #include 
    #include 
    #include 
    
    using namespace std;
    
    void permute(string select, string remain){
        if(remain == ""){
            cout << select << endl;
            return;
        }
        for(int i=0;remain[i];++i){
            string wk(remain);
            permute(select + remain[i], wk.erase(i, 1));
        }
    }
    
    int main(){
        string anagrama;
        cout << "input character set >";
        cin >> anagrama;
        sort(anagrama.begin(), anagrama.end());
        permute("", anagrama);
    }
    

    Another version

    #include 
    #include 
    #include 
    #include 
    #include 
    
    using namespace std;
    
    void permute(string& list, int level, vector& v){
        if(level == list.size()){
            v.push_back(list);
            return;
        }
        for(int i=level;list[i];++i){
            swap(list[level], list[i]);
            permute(list, level + 1, v);
            swap(list[level], list[i]);
        }
    }
    
    int main(){
        string anagrama;
        vector v;
        cout << "input character set >";
        cin >> anagrama;
        permute(anagrama, 0, v);
        sort(v.begin(), v.end());
        copy(v.begin(), v.end(), ostream_iterator(cout, "\n"));
    }
    

提交回复
热议问题