题意:
把n个字符串连起来使字典序最小
思路:
题目很简单但是这种思路真的非常重要
考虑已经连接的串字典序是最小的 那么交换任意两个都有可能使字典序变大
那么反向考虑 若使每次交换能使字典序变小 那就可以交换.
这样我们就能写出比较函数, 之后依此排个序就行了
#include <bits/stdc++.h>
using namespace std;
int cmp(string a,string b)
{
return a+b<b+a;
}
string a[111];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
cout<<a[i];
return 0;
}