题目要求
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
输入格式:
有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。
输出格式:
每组数据输出一个表示最大的整数。
输入样例:
2
12 123
4
7 13 4 246
输出样例:
12312
7424613
解题思路
1、将输入的数字转换成字符串
2、按照自定义的排序规则(即两个字符串拼接成的数之间的大小关系)进行排序
3、将排好序的字符串依次拼接起来就可以得到最大的多位整数。具体实现中使用了 STL 中的 vector 容器和 sort 函数。
代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
vector<string> v;
bool cmp1(string a, string b) {
string tmp1 = a + b;
string tmp2 = b + a;
return tmp1 > tmp2;
}
int main(){
int ans;
while(scanf("%d",&ans)==1){
v.clear();
for(int i=0;i<ans;i++){
string temp;
cin>>temp;
v.push_back(temp);
}
sort(v.begin(),v.end(),cmp1);
for(auto it=v.begin();it!=v.end();it++){
cout<<*it;
}
cout<<endl;
}
}