题目描述
设有 �n 个正整数 �1…��a1…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
输入格式
第一行有一个整数,表示数字个数 �n。
第二行有 �n 个整数,表示给出的 �n 个整数 ��ai。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入 #1复制
3 13 312 343
输出 #1复制
34331213
输入 #2复制
4 7 13 4 246
输出 #2复制
7424613
出思路之前,再重温一遍sort函数的应用(不想看的可以直接看代码):
格式:sort(数组名称,数组名称+排序元素总数,排序方式(排序函数));
排序函数:布尔型函数,每次表示每两个元素之间的比较选择,返回比较后选择的;
应用:可以快速地将一整个数组重组排序。
思路:定义一个string类型的字符数组,每单元存储一个字符串
for(int i=0;i<n;i++) cin>>s[i];
将这个数组按照每两个字符串拼接出的数是这两个数拼接出的最大数
第一种拼接方式:a串+b串
第二种拼接方式:b串+a串
sort(s,s+n,cmp);
输出重排后的数组
for(int i=0;i<n;i++) cout<<s[i];
#include <bits/stdc++.h>
using namespace std;
string s[25];
bool cmp(string a,string b)
{
return a+b>b+a;//拼数尽可能大
}
int main(){
int n;
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];
return 0;
}