利用两个数连接后再进行比较,以局部最优达到全局最优。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

// 自定义比较函数
bool compare(const string& a, const string& b) {
    return a + b > b + a;
}

int main() {
    int n;
    cin >> n;
    vector<string> nums(n);
    for (int i = 0; i < n; ++i) {
        cin >> nums[i];
    }
    // 按照自定义规则排序
    sort(nums.begin(), nums.end(), compare);
    string result;
    for (const string& num : nums) {
        result += num;
    }
    // 处理特殊情况:输入全是0
    if (result[0] == '0') {
        result = "0";
    }
    cout << result << endl;
    return 0;
}