• CPA招新Ⅱ


    新学期开始啦,我们CPA是2019年6月成立的,创建时有20位元老。现在需要招新啦,每年新学期社团服务中心会组织百团大战。我们CPA迎来第一次招新,我们很期待迎来新成员。

    每天都有元老去招新,每招到一个萌新,招新人会在纸上写一个大写字母。CPA共有竞赛部、宣传部、办公部、组织部四个部门。我们规定A代表竞赛部(Competition department),B代表宣传部(Propaganda Department)、C代表办公部(Office)、D组织部(Organization Department)。社团招新后需要统计每一个部门有多少人?有一天会长突然来了,需要你给他一份部门人员名单,名单需要根据人数从大到小排序的,聪明的你会直接写一个程序给会长,让他直接使用程序排序。

    输入格式:

    输入一行字符串,字符串长度不大于10000。

    输出格式:

    如果人数相同,按照字典序从小到大排序,每输出一个部门换行。

    输入样例:

    AABBCCCDDAA
    

    输出样例:

    1. Competition department 4 people!
    2. Office 3 people!
    3. Organization Department 2 people!
    4. Propaganda Department 2 people!

    备注

    也许有人调皮不止ABCD四个字符,真实人数以ABCD为准。

    //典型的结构体排序问题,这里的结构体值需要另外赋予,通过数组对各个字符的统计结果赋给a,而这里的字符需要手动赋予,最后排序就行。 

    1. #include<bits/stdc++.h>
    2. using namespace std;
    3. struct xx{
    4.     int a;
    5.     string b;
    6. }s[10005];
    7. bool cmp(xx m,xx n){
    8.     if(m.a==n.a)return m.b<n.b;//如果个数相同,按字符的字典排序,就是从小到大
    9.     return m.a>n.a;//从大到小排序
    10. }
    11. int main(){
    12.     string x;int i,y[4]={0};//数组初始化
    13.     getline(cin,x);
    14.     for(i=0;i<x.size();i++){
    15.         if(x[i]=='A')y[0]++;
    16.         if(x[i]=='B')y[1]++;
    17.         if(x[i]=='C')y[2]++;
    18.         if(x[i]=='D')y[3]++;
    19.     }
    20.     for(i=0;i<4;i++)
    21.         s[i].a=y[i];
    22.    s[0].b="Competition department ";
    23.    s[1].b="Propaganda Department ";
    24.    s[2].b="Office ";
    25.    s[3].b="Organization Department ";
    26.     sort(s,s+4,cmp);
    27.     for(i=0;i<4;i++){
    28.         cout<<s[i].b<<s[i].a<<" people!\n";
    29.     }
    30.     return 0;
    31. }

  • 相关阅读:
    FFmpeg进阶: 音频滤镜大全
    用HTML、CSS和JavaScript制作的通用进制转换器
    黑马点评回顾 redis实现共享session
    ElementUI实现增删改功能以及表单验证
    2023年中国临床信息系统市场规模及细分市场结构分析[图]
    数据结构详细笔记——图
    每日刷题记录 (十三)
    16,8和4位浮点数是如何工作的
    ExpressQuantumPack显示的值的图标
    C++ 访问说明符详解:封装数据,控制访问,提升安全性
  • 原文地址:https://blog.csdn.net/m0_51863774/article/details/127763467