题目要求
程序设计竞赛时,赛场升起各色气球多么激动人心呀!志愿者送气球忙得不亦乐乎,观战的某人想知道目前哪种颜色的气球送出最多。
输入格式:
测试数据有多组,处理到文件尾。每组数据先输入一个整数n(0<n≤5000)表示分发的气球总数。接下来输入n行,每行一个表示颜色的字符串(长度不超过20且仅由小写字母构成)。
输出格式:
对于每组测试,输出出现次数最多的颜色。若出现并列的情况,则只需输出ASCII码值最小的那种颜色。
输入样例:
3
pink
red
pink
输出样例:
pink
代码
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
int n;
while (cin >> n) {
map<string, int> cnt; // 统计每种颜色出现的次数
string color;
for (int i = 0; i < n; i++) {
cin >> color;
cnt[color]++;
}
string ans = ""; // 出现次数最多的颜色
int max_cnt = 0; // 出现次数最多的次数
for (auto p : cnt) {
if (p.second > max_cnt || (p.second == max_cnt && (ans == "" || p.first < ans))) {
max_cnt = p.second;
ans = p.first;
}
}
cout << ans << endl;
}
return 0;
}