C++ 投票程序:选出得票最多的同学
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> votes(m);
for (int i = 0; i < m; i++) {
cin >> votes[i];
}
unordered_map<int, int> count;
int maxCount = 0;
int maxNum = 0;
for (int i = 0; i < m; i++) {
count[votes[i]]++;
if (count[votes[i]] > maxCount) {
maxCount = count[votes[i]];
maxNum = votes[i];
}
}
cout << maxNum << endl;
return 0;
}
题目描述
小 T 和他的小伙伴们到 CZ 中学的创新实验班报到后的第一件事就是选班委,班主任 R 老师走上讲台宣布了选举办法,首先让全班 40 位同学依次上讲台做自我介绍,然后按照职位一个一个依次进行选举,先选班长,再选学习委员……,选举办法是每人投一票,谁 的票数最高就选谁担任这个职位,最后围棋高手小 W 颇具大将风范被选为班长,学神小 Z 当选为学习委员那是众望所归,小 S 则有天生一副好嗓子,不但歌唱得好,并且能将多种动物的叫声模仿得惟妙惟肖,因此当选为文体委员。
小 T 同学在本次选举中负责计票,他觉得手工计票太慢了,且容易出错,因此想请你编一个程序实现机器计票功能。这个程序要能实现以下功能:全班共有 n 个同学,依次用 1 到 n 编号,共有 m 个人(包括班主任和 任课老师等)参与了投票,每张选票上写有一个同学的编号,得票最多的同学当选。
输入格式
输入数据第一行包含两个用空格隔开的正整数 n 和 m,其中 n≤200,m≤2000。
第二行有 m 个用空格隔开的不超过 n 的正整数,表示这 m 张选票上所写的编号。
输出格式
输出得票最多的那个同学的编号。如果同时有两名以上同学得票最多,输出编号最小的那个同学的编号。
输入输出样例
样例 1
输入样例 复制 3 4 1 3 2 1 输出样例 复制 1
样例说明
全班共有 3 位同学,共有 4 人进行了投票,其中有 2 人选了 1 号同学,选 2 号和 3 号同学的都只有 1 人,最后 1 号同学得 2 票,2 号和 3 号同学各得 1 票,1 号同学得票最多, 当选班委。
数据范围与提示
20% 的数据满足: n≤3,m≤20
60% 的数据满足:n≤100,m≤500
70% 的数据满足:得票最多的同学是唯一的
100% 的数据满足:n≤200,m≤2000
原文地址: https://www.cveoy.top/t/topic/qr3b 著作权归作者所有。请勿转载和采集!