狂宠粉博主 2023-12-04 21:49 采纳率: 100%
浏览 18
已结题

第1题 USAICO 查看测评数据信息

第1题 USAICO 查看测评数据信息
c++
第1题 USAICO
FJ的农场举行了异一场USA奶牛奥林匹克竞赛.N(1 <= N <= 100,000; N 是一个奇数)只奶牛都已经获得了一个整数分数S(0 <= S <= 10,000).
FJ必须统计这些分数以便指导他们.帮他吧~~给出一个列表,计算最小值、最大值、中间数、众数。中间值是一个值M,至少一半的数<=M,至少一半的数>=M。众数是指出现次数最多的一个数。FJ知道分数里面只有一个众数。
输入格式
第1行:一个整数N。
第2..N+1行:每一行有一个整数,是一只奶牛的分数
输出格式
四个用空格隔开的整数:最小值、最大值、中间数、众数
输入/输出例子1
输入:
9
1
3
15
3
5
6
7
8
3
输出:
1 15 5 3
样例解释
9只奶牛的分数,在1到15之间,最小值是 1;最大值是 15;中间值是 5;众数是 3,出现了3次。
**_

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-05 09:12
    关注

    【以下回答由 GPT 生成】

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <unordered_map>
    
    using namespace std;
    
    void calculateCowScores(int N, vector<int> scores) {
        // 计算最小值
        int minScore = *min_element(scores.begin(), scores.end());
    
        // 计算最大值
        int maxScore = *max_element(scores.begin(), scores.end());
    
        // 计算中间数
        sort(scores.begin(), scores.end());
        int middleScore;
        if (N % 2 == 0) {
            middleScore = (scores[N/2 - 1] + scores[N/2]) / 2;
        } else {
            middleScore = scores[N/2];
        }
    
        // 计算众数
        unordered_map<int, int> countMap;
        for (int score : scores) {
            countMap[score]++;
        }
        int mode, maxCount = 0;
        for (auto it : countMap) {
            if (it.second > maxCount) {
                mode = it.first;
                maxCount = it.second;
            }
        }
    
        cout << minScore << " " << maxScore << " " << middleScore << " " << mode << endl;
    }
    
    int main() {
        int N;
        cin >> N;
        vector<int> scores(N);
        for (int i = 0; i < N; i++) {
            cin >> scores[i];
        }
    
        calculateCowScores(N, scores);
    
        return 0;
    }
    

    在这个解答中,我使用了C++的标准库函数和数据结构来解决这个问题。首先,我定义了一个函数calculateCowScores来计算最小值、最大值、中间数和众数。在这个函数中,我使用了min_elementmax_element函数来计算最小值和最大值,使用sort函数对分数进行排序,并根据奇偶数情况来计算中间数,使用unordered_map来统计每个分数的出现次数,找出出现次数最多的数作为众数。最后在main函数中,我读入奶牛数量N和每只奶牛的分数,然后调用calculateCowScores函数来输出结果。



    【相关推荐】


    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7428827
    • 除此之外, 这篇博客: 玩转oj之1002题(分糖果)中的 某幼儿园里,有5个小朋友围成一圈,他们的编号为1、2、3、4、5.他们身上都有若干个糖果,现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果分不均匀的糖果,则立即吃掉),自己留一份,其余两份分给他相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果? 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 已采纳回答 10月3日
  • 创建了问题 12月4日