zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    enum
    爬虫实战2:爬头条网美图--Ajax图片加载处理
    爬虫实战1:使用requests和正则爬取电影信息
    爬虫7:selenium
    爬虫6:pyquery库
    爬虫5:beautifulsoup
    爬虫4:re库
    爬虫3:requests库
    爬虫2:urllib
    爬虫1:概述
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798578.html
Copyright © 2011-2022 走看看