Массив: максимально возможное число

Для массива элементов найдите наибольшее возможное число, которое может формироваться с использованием элементов массива.
например: 10 9
ANS: 910
2 3 5 78
ANS: 78532
100 9
ans: 9100

Я знаю, что у этой проблемы есть решение с использованием настраиваемого компаратора строк, но я не понимаю, как это на самом деле работает.

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

    using namespace std;


    bool compare ( string a, string b )  
    {  
            return atoi( (a+b).c_str() ) < atoi((b+a).c_str() );  
    }

    int main()  
    {  
            vector<string> vs;  
            string s;  
            while ( cin >> s ) {  
                    vs.push_back(s);  
            }  
            sort( vs.begin(), vs.end(), compare );  
            for ( int i = vs.size()-1; i >= 0; i-- ) {  
                    cout << vs[i];  
            }  
    }   

Может ли кто-нибудь предложить алгоритм для решения этой проблемы? Мы будем благодарны за объяснение вышеуказанного компаратора. Спасибо

7
задан PengOne 25 June 2011 в 06:38
поделиться