『C++&C语言』String(字符串)比较大小如果有A+BB+A则AB
『C++&C 语言』String(字符串)比较大小如果有 A+BB+A 则 AB
String(字符串) 比较大小 如果有 A+B>B+A 则 A>B
题目引入:
给定 N 个整数,那任意顺序排列连成一个数,得到的最大的数是多少?
分析:贪心,字典序排序,都不对大小比较也不对,今天我跟别人想了很久绞尽脑汁,各种模拟都失败了。最后才发现对于俩个数 a=313,b=3133。
若 a 排在 b 前则构造的数字为 3133133,另一种是 3133313 明显第二种较大,那么 b 是排在 a 前面的。那么也就是说当有 N 个数的时候,基于这个排序准则排序即可。
那么就会得到最大的排列。
若给定 200 位的数字,该怎么办?字符串的怎么办,按照上述的思想,我们就得到了 String a,b;若 a+b>b+a,那么应有 a 排在 b 前面。
实现代码如下:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
vector<string> v;
bool cmp(string a,string b)
{
return a+b>b+a;
}
int main()
{
int n;
string tem;
cin>>n;
while(n--)
{
cin>>tem;
v.push_back(tem);
}
sort(v.begin(),v.end(),cmp);
for(int i=0,e=v.size();i<e;i++)
{
cout<<v[i];
}
puts("");
return 0;
}
『C++&C语言』String(字符串)比较大小如果有A+BB+A则AB
https://chiamzhang.github.io/2024/06/29/『C++&C语言』String(字符串)比较大小如果有A+BB+A则AB/