> Given a string of length n, print all permutation of the given string.
> Repetition of characters is allowed. Print these permutations in
> lexicographically sorted order  

Examples:

Input: AB

Ouput: All permutations of AB with repetition are:

      AA
      AB
      BA
      BB

Input: ABC

Output: All permutations of ABC with repetition are:

       AAA
       AAB
       AAC
       ABA
       ...
       ...
       CCB
       CCC

The following is my code:

    void permutate(const string& s, int* index, int depth, int len, int& count)
    {
        if(depth == len)
        {
            ++count;
            for(int i = 0; i < len; ++i)
            {
                cout << s[index[i]];
            }
            cout << endl;
            return;
        }
        
        for(int i = 0; i < len; ++i)
        {
            index[depth] = i;
            permutate(s, index, depth+1, len, count);
        }
    }

    int main()
    {
        string s("CBA");
        sort(s.begin(), s.end());
        cout << s << endl;
        cout << "**********" << endl;
        int len = s.size();
        int* index = new int[len];
        int count = 0;
        permutate(s, index, 0, len, count);
        cout << count << endl;
        
        system("pause");
        return 0; 
    }