题目:链接: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; }