Description
给出n个字符串a1,…,an,将这n个字符串组合起来,问字典序最小的
Input
第一行一整数n表示字符串数量,之后n个串长不超过50的串,总串厂不超过5e4(1<=n<=5e4)
Output
输出字典序最小的组合方案
Sample Input
4
abba
abacaba
bcd
er
Sample Output
abacabaabbabcder
Solution
如果a+b < b+a说明a串必然在b串前面,按此规则给这n个串排个序依次输出即可
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 55555
int n;
string s[maxn];
bool cmp(string a,string b)
{
return a+b<b+a;
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)cin>>s[i];
sort(s,s+n,cmp);
for(int i=0;i<n;i++)cout<<s[i];
cout<<endl;
}
return 0;
}