第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次。
**_
第1题 USAICO 查看测评数据信息
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注【以下回答由 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_element和max_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