问题描述
给定 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an,你可以将它们任意排序。
现要将这 𝑛n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。
问,这个数最大可以是多少。
输入格式
第一行输入一个正整数 𝑛n(1≤𝑛≤201≤n≤20)。
第二行输入 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an(1≤𝑎𝑖≤1051≤ai≤105)。
输出格式
输出一个整数,表示答案。
样例输入
3
13 312 343
样例输出
34331213
#include<bits/stdc++.h>
using namespace std;
//记住如何比较的,非常的妙
bool cmp(string a,string b){
return a+b>b+a;
}
int main(){
int n;
cin>>n;
string a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
string s;
for(int i=0;i<n;i++){
s+=a[i];
}
cout<<s<<'\n';
return 0;
}
整体思路是简单的,主要记住cmp函数的做法