1.题目
众所周知,在打ACM比赛的时候,队伍只要通过了一个题,志愿者们就会送过来相对应颜色的气球 (志愿者小姐姐好漂亮QAQ)
现在刚刚进行完一场ACM比赛,PIPI拿到了所有的气球颜色,但是他想知道哪个题通过的人最多,你能告诉PIPI通过队伍最多的题所对应的气球颜色吗?
输入
输入包含多组测试用例。
对于每一个测试样例,第一行输入一个数字n (0<n<=1000),代表气球的数目。
以下n行每一行是一个长度不超过15为字符串s,代表气球的颜色。
输入以0为结尾,对应的样例无需处理。
输出
对于每组样例,输出颜色数最多气球的颜色。输出保证唯一解~
样例输入
5 green red blue red red 3 pink orange pink 0
输出
red pink
2.思路
水题,最近太太太懒惰了呜呜呜。
用map统计出现最多次的字符串并输出。
注意
(1)如果是输入字符串的个数是0则啥也不输出,所以在while输入的判断中要加上&&n。
(2)每次输入一组数据后记得对map进行清空——map.clear(),而且map<string,int>mp的value值默认初始为0。
3.代码
#include<iostream> #include<stdio.h> #include<map> #include<string> #include<string.h> using namespace std; map<string,int>mp; int main() { //freopen("路径","r",stdin); int n; while(scanf("%d",&n)&&n){ mp.clear(); for(int i=0;i<n;i++){ string str; cin>>str; mp[str]++; } map<string,int>::iterator it;//如果支持c++11则直接auto即可 int max=-1;//最大值 string key; for(it=mp.begin();it!=mp.end();it++){ if(it->second>max){ max=it->second; key=it->first; } } cout<<key<<endl; } //system("pause"); return 0; }