• 01串排序


    将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时按ASCII码排序

    输入样例

    10011111

    00001101

    1010101

    1

    0

    1100

    输出样例

    0

    1

    1100

    1010101

    00001101

    10011111

    multiset集合的应用

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    struct cmp
    {
        bool operator()(const string &s1,const string &s2)
        {
            if(s1.length()!=s2.length())return s1.length()<s2.length();
            int c1=count(s1.begin(),s1.end(),'1');
            int c2=count(s2.begin(),s2.end(),'1');
            return (c1!=c2?c1<c2:s1<s2);
        }
    };
    int main()
    {
        multiset<string,cmp>s;
        string a;
        while(cin>>a)
        {
            s.insert(a);
        }
        for(multiset<string,cmp>::iterator it=s.begin();it!=s.end();it++)
            cout<<*it<<endl;
        return 0;
    }
  • 相关阅读:
    Path类
    C#集合
    阿里巴巴2013年实习生笔试题B
    阿里巴巴2013年实习生笔试题A
    腾讯2014年校园招聘笔试试题
    腾讯技术类校园招聘笔试试题
    腾讯2013年实习生笔试题
    腾讯2012年实习生笔试题
    hdu1505
    hdu1506
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7126756.html
Copyright © 2020-2023  润新知