Учитывая массив элементов, найти максимально возможное число, которое может
быть сформирован с использованием элементов массива.
например: 10 9
Ответ: 910
2 3 5 78
Ответ: 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];
}
}
Может кто-нибудь предложить алгоритм для решения этой проблемы?
Пояснение вышеупомянутого компаратора будет оценено.
Спасибо