本来想直接用字典序给数列排序,然后按顺序输出,但是会有特殊情况不符合。
正确的贪心策略是将两个字符串加起来排序,然后按顺序输出。
AC代码:
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstdlib>
#include <algorithm>
#include<string.h>
#include<math.h>
#define llu unsigned long long
using namespace std;
bool cmp(string x,string y)
{
return x+y<y+x;
}
int main()
{
int n;
cin >> n ;
string s[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;
}