https://www.51nod.com/contest/Problem.html#!problemId=2204&contestId=54
输入n个字符串s[i],你要把他们按某个顺序连接起来,使得字典序最小。
(1 <= n <= 100)
(每个字符串长度 <= 100)
(字符串只包含小写字母)
Input
第一行一个整数n。 接下来每行一个字符串s[i]。Output
一行一个字符串表示把输入的n个字符串按某个顺序连接之后的结果Input示例
6 it looks like an easy problemOutput示例
aneasyitlikelooksproblem
这道题不能直接用字典序,比如 b ba 按照字典序答案是bba,但是显然bab更优。
排序比较比较a + b与 b + a。
#include<bits/stdc++.h>
#define maxn 105
using namespace std;
bool cmp(string a,string b)
{
return a+b<b+a;
}
int main()
{
int n;
cin>>n;
string v[maxn];
for(int i=0;i<n;i++)
{
string s;
cin>>s;
v[i]=s;
}
sort(v,v+n,cmp);
for(int i=0;i<n;i++)
cout<<v[i];
cout<<endl;
return 0;
}