题目:链接:https://ac.nowcoder.com/acm/problem/16783
来源:牛客网
设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
解决方法:贪心
思路:按照字典排序 既13 312 343 排序为 343 312 13
但是有一个地方有问题 当数字为32 321时,会将321排在32前面 输出为32132。 但实际最大数为32321。
故以字符组运算,字符组a+字符组b>字符组b+字符组a时,将a排在前面,则解决了。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmd(string a,string b)
{
return a+b>b+a;
}
int main()
{
int n;
cin>>n;
string a[25];
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmd);
for(int i=0;i<n;i++)
{
cout<<a[i];
}
return 0;
}


京公网安备 11010502036488号