P1012 [NOIP1998 提高组] 拼数

题目传送门

#include <bits/stdc++.h>

using namespace std;

const int N = 30;
string a[N];

bool cmp(const string &a, const string &b) {
    //自定义排序函数,这一步非常巧妙,假设a=321,b=32;a+b=32132,b+a=32321
    // 这样下面sort排下来就是32>321避免出现32132>32321的情况
    return a + b > b + a;
}

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    sort(a + 1, a + 1 + n, cmp);
    for (int i = 1; i <= n; i++)cout << a[i];
    return 0;
}
原文地址:https://www.cnblogs.com/littlehb/p/15593219.html