#include<iostream> #include<algorithm> using namespace std; bool cmp(string b,string a) {return b+a>a+b;}//靈魂在這 int main() {string a[21];int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++)cout<<a[i]; }
就是這樣看標記的那一行(想學的慢慢讀完)。利用一個字符串數組,兩個數組相加不是數值相加而是直接相加:樣例123+345=123345.利用這個性質,將前一項與后一項(123345和345123代表a+b與b+a)相比較,從第一位ascll碼開始,往后比,直到比出一項有大小的,由于這一位在高位,所以在前面幾位相同的情況下這一位決定著兩種組合的大小!于是就出來了。。。。。