1038 Recover the Smallest Number (30分) sort-cmp妙用(用于使字符串序列最小)

题目

https://pintia.cn/problem-sets/994805342720868352/problems/994805449625288704

题意

给一堆字符串,组合,使得到的字符串最小

Sample Input:

5 32 321 3214 0229 87

Sample Output:

22932132143287

思路

啊啊啊啊啊,cmp函数写成return a + b < b + a;的形式,保证它排列按照能够组成的最小数字的形式排列。https://www.liuchuo.net/archives/2303

code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string num[10007];
bool cmp(string x,string y) {
    return x+y<y+x;//!!!!!!!
}
int main()
{
    int N; cin>>N;
    for(int i=0;i<N;++i) cin>>num[i];
    sort(num,num+N,cmp);
    int f=1;
    for(int i=0;i<N;++i)
    {
        for(int j=0;j<num[i].size();++j)
        {
            if(num[i][j]=='0' && f) continue;
            else {
                f=0;
                cout<<num[i][j];
            }
        }
    }
    if(f) cout<<0;
    return 0;
}
posted @ 2020-08-21 21:06  liuyongliu  阅读(126)  评论(0编辑  收藏  举报