洛谷-P1012 拼数
题目描述
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
输入格式
第一行,一个正整数n。
第二行,n个正整数。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入 #1
3
13 312 343
输出 #1
34331213
C++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
bool cmp(string x, string y) {
int i,j,lenx=x.size(),leny=y.size();
for(i=0,j=0;!(x[i]!=y[j]||i==lenx-1&&j==leny-1);++i%=lenx,++j%=leny);
return x[i]>y[j];
}
int main() {
int n,i;
cin>>n;
string a[n],ans;
for(i=0;i<n;++i)
cin>>a[i];
sort(a,a+n,cmp);
for(i=0;i<n;++i)
ans+=a[i];
cout<<ans<<endl;
return 0;
}