题目描述 Description
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
输入描述 Input Description
第一行一个正整数n。
第二行n个正整数,空格隔开。
输出描述 Output Description
连接成的多位数。
样例输入 Sample Input
3
13 312 343
4
7 13 4 246
样例输出 Sample Output
34331213
7424613
字典序排序的方法降序排序。
但若一个数字a是b的开头部分,则要比较b的len(a)+1位上的数字与a的第一位上的数字的大小,进行调整。因为若b的len(a)+1位上的数字比a的第一位上的数字大或相等,那么把b放到前面更合适,反之则应该放a在前面。
#include <iostream>
#include<algorithm>
#include <string.h>
using namespace std;
int cmp(const string &s1,const string &s2)
{
return s1+s2>s2+s1;
}
int main()
{
int n;
string s[21];
while (cin>>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;
}