酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++实现选举学生会主席:投票统计与并行处理技巧

## 🗳️ C++ 实现学生会主席选举(P3755) ### 📜 问题描述 这是一个典型的计数与统计问题:给定若干学生的投票,每个学生投给一个候选人编号,要求统计每个候选人的得票数,并输出得票最高者(若并列,则输出编号较小者)。 ### 🧮 核心思路 用数组或哈希表记录票数,遍历所有票数,找出最大值并处理并列情况。 ### 💻 C++ 代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; // 投票总数 cin >> n; // 假设候选人编号范围 1~100000(根据题目调整) const int MAX_CANDIDATE = 100000; vector<int> votes(MAX_CANDIDATE + 1, 0); int candidate; for (int i = 0; i < n; i++) { cin >> candidate; votes[candidate]++; } int maxVotes = 0; int winner = 1; for (int i = 1; i <= MAX_CANDIDATE; i++) { if (votes[i] > maxVotes) { maxVotes = votes[i]; winner = i; } // 若 votes[i] == maxVotes,则保持 winner 不变(因为 i 递增,保留较小者) } cout << winner << " " << maxVotes << endl; return 0; } ``` ### ⚠️ 开发注意要点 - 候选人编号可能较大,使用 `vector` 动态分配内存,避免固定数组溢出。 - 若候选人编号范围未知或极大,改用 `unordered_map` 存储票数。 - 处理并列时,遍历顺序从小到大,仅当 `>` 时更新,可自动保留最小编号。 - 注意输入数据可能包含无效编号,需根据题意过滤(例如编号范围外者忽略)。 ### 📊 示例运行 输入: ``` 5 3 1 3 2 3 ``` 输出: ``` 3 3 ``` 解释:候选人3得票3次,最高。 ######[AI问答 | 499点数解答 | 2026-08-15 23:47:43]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]