题意:给定n个数,让你将他们重新组合使得它们组成的数字最大。
思路:贪心,很容易想到的是按位的首个数字比较大小,相同则往后比,但是写起来好困难。。。正解:将他们用字符串读入,相邻数字只有两种情况,要么a+b,要么b+a,比较二者大小,最后输出即可。
AC代码:

#include<bits/stdc++.h>
using namespace std;
bool cmp(string a,string b){
    return a+b > b+a;
}
int main(void){
    int n;
    while(cin>>n&&n){
        string a[n];
        for(int i = 0; i < n; i++){
            cin>>a[i]; 
        }
        sort(a,a+n,cmp);
        for(int i= 0; i < n; i++){
            cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}