容易跳坑的错误思路
将整数按字典序排序,比如把7,13,4,246排序成7,4,246,13,这样乍一看是对的,但多尝试几组数据以后可以发现会有类似98,9或者321,32这样的数据没法得到正确答案。

正确的贪心思路:
*假设数字均以字符串储存
对于数字a, b, c, d,我们任意改变其中两个相邻数字的顺序,不会对余下的数字造成影响。比如对1, 2, 3, 4, 5中的3和4改变顺序,整数变成12435,其3和4前后的1、2和5并不会受到影响。
所以我们可以把两个相邻的数字(其实不相邻也可以,排序到了最后都是一样的)单独拎出来排序,只需要令 a+b > b+a 即可。每一个单独的小部分能组成最大的整数时,这个整体就能组成最大的整数

#include <iostream>
#include <string>

using namespace std;

int main() {
    int n;
    cin >> n;
    string nums[n]; //输入的n个正整数
    for (int i = 0; i < n; ++i) {
        cin >> nums[i];
    }
    //两两拼接,看看如何拼接数才能更大
    for (int i = 0; i < n - 1; ++i) {
        for (int j = i + 1; j < n; ++j) {
            if (nums[i] + nums[j] < nums[j] + nums[i]) {
                swap(nums[i], nums[j]);
//                for (string s:nums) {
//                    cout << s << " ";
//                }
//                cout << endl;
            }
        }
    }

    for (string &a:nums) {
        cout << a;
    }
}