前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >String(字符串) 比较大小 如果有A+B>B+A 则A>B

String(字符串) 比较大小 如果有A+B>B+A 则A>B

作者头像
风骨散人Chiam
发布2020-10-28 11:46:08
4280
发布2020-10-28 11:46:08
举报
文章被收录于专栏:CSDN旧文

题目引入:

给定N个整数,那任意顺序排列连成一个数,得到的最大的数是多少?

分析:贪心,字典序排序,都不对大小比较也不对,今天我跟别人想了很久绞尽脑汁,各种模拟都失败了。最后才发现对于俩个数a=313,b=3133。

若a排在b前则构造的数字为3133133,另一种是3133313明显第二种较大,那么b是排在a前面的。那么也就是说当有N个数的时候,基于这个排序准则排序即可。

那么就会得到最大的排列。

若给定200位的数字,该怎么办?字符串的怎么办,按照上述的思想,我们就得到了String a,b;若a+b>b+a,那么应有a排在b前面。

实现代码如下:

代码语言:javascript
复制
#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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档