拼数(sort,cmp)

链接:https://ac.nowcoder.com/acm/problem/16783
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

输入描述:

第一行,一个正整数n。
第二行,n个正整数。

输出描述:

一个正整数,表示最大的整数
示例1

输入

3
13 312 343

输出

34331213
 1 #include <bits/stdc++.h>
 2 typedef long long LL;
 3 #define pb push_back
 4 #define mst(a) memset(a,0,sizeof(a))
 5 const int INF = 0x3f3f3f3f;
 6 const LL LINF = 0x3f3f3f3f3f3f3f3f;
 7 const double eps = 1e-8;
 8 const int mod = 1e9+7;
 9 const int maxn = 1e5+10;
10 using namespace std;
11 
12 vector<string> vt;
13 
14 bool cmp(string a,string b)
15 {
16     return a+b > b+a;
17 }
18 
19 int main()
20 {
21     #ifdef DEBUG
22     freopen("sample.txt","r",stdin); //freopen("data.out", "w", stdout);
23     #endif
24     
25     int n;
26     scanf("%d",&n);
27     for(int i=1;i<=n;i++)
28     {
29         string t;
30         cin>>t;
31         vt.push_back(t);
32     }
33     sort(vt.begin(), vt.end(), cmp);
34     string ans="";
35     for(auto it : vt)
36         ans += it;
37     cout<<ans<<"\n";
38     
39     return 0;
40 }

-

猜你喜欢

转载自www.cnblogs.com/jiamian/p/13195626.html