贪心求最大字符串

本题核心是sort排序,用cmp自定义排序顺序,把大的拼接数放在前面。sort逻辑如图展示,再去比较5和9,3和30来达到最大字符串。

代码实现


    #include <bits/stdc++.h>
    
using namespace std;

bool cmp(string a, string b){
    return a + b > b + a;
}
int main(){
    int n;
    cin >> n;
    string s[21];
    for(int i = 0; i < n; i++){
        cin >> s[i];
    }
    sort(s, s + n, cmp);
    for(int i = 0; i < n; i++){
        cout << s[i];
    }
    return 0;
}