题目描述
设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213
又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613
输入格式
第一行,一个正整数nn。
第二行,nn个正整数。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入
3
13 312 343
输出 #1 复制
34331213
思路:
用sort排序方法,两个数从高位到低位比较,把高位的值高的放到前面,
要注意的就是 像32 321还有 32 324这样的数字比较,
拿32 和321举例,当前面都相等的时候,把321的后一位与他的第一位进行比较,若是后一位大于第一位就把321排在32前,否则,反之。
上代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
string a[21];
int cmp(string c,string v)
{
for(int i=0;i<min(c.length(),v.length());i++){
if(c[i]<v[i])
return 0;
else if(c[i]>v[i])
return 1;
}
if(v[c.length()]>v[0])
return 0;
return 1;
}
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;
}