ChisocDust


私信TA

用户名:OnC137

访问量:1323

签 名:

太阳就在眼前,何须留恋蜡烛

等  级
排  名 4110
经  验 1767
参赛次数 8
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

容器选择list,便于排序,且不用确定容器大小

A,B,C,D,E四个容器的元素都是对应分段的成绩,依次读入成绩并存入相应容器即可


重点是怎么快速得到人数最多的等级段,这里我们可以写一个返回值为list的比较函数,然后重复调用即可

代码很易懂,重点是学习返回值为list的函数的写法

注意事项:

无论是函数原型还是参数类型,list后尖括号内的元素类型一定不能少!!


参考代码:

#include<bits/stdc++.h>
using namespace std;
int n, o;
std::list<int> A, B, C, D, E;
list<int> f(list<int> a, list<int> b) {
    if (a.size() > b.size())
        return a;
    else
        return b;
}
int main(void) {
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> o;
        if (o <= 100 && o >= 90)
            A.push_back(o);
        else if (o <= 89 && o >= 80)
            B.push_back(o);
        else if (o <= 79 && o >= 70)
            C.push_back(o);
        else if (o <= 69 && o >= 60)
            D.push_back(o);
        else
            E.push_back(o);
    }
    
    cout << A.size() << ' ' << B.size() << ' '
         << C.size() << ' ' << D.size() << ' '
         << E.size() << endl;
    list<int> ee = f(f(f(f(A, B), C), D), E);
    cout << ee.size() << endl;
    ee.sort();
    while (!ee.empty()) {
        cout << ee.back() << ' ';
        ee.pop_back();
    }
    return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »