p1012拼数题解

#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码开始,往后比,直到比出一项有大小的,由于这一位在高位,所以在前面几位相同的情况下这一位决定着两种组合的大小!于是就出来了。。。。。

猜你喜欢

转载自www.cnblogs.com/lbssxz/p/10427684.html