利用两个数连接后再进行比较,以局部最优达到全局最优。
#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;
}

京公网安备 11010502036488号