题目大意:统计一串字符串中出现颜色最多的那个颜色串。
解题思路:由于颜色串不好标记和记录,直接利用map进行关联,这样可以记录不同颜色出现的次数。再构造一个迭代器,遍历map找到最大值即可。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1004
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
int n,maxn,len;
string str;
map<string,int> s;
int main(){
while(scanf("%d",&n)!=EOF && n){
s.clear(); //清空map
maxn = -1;
for(int i=0; i < n; i++ ){ //接收color
cin >> str;
s[str]++; //对应的键,值++
}
map<string,int>::iterator iter; //构造一个迭代器,访问map
for(iter = s.begin(); iter != s.end(); iter++) //遍历map,找到最大值
if(iter->second > maxn)
maxn = iter->second;
for(iter = s.begin(); iter != s.end(); iter++) //输出结果
if(maxn == iter->second)
cout<<iter->first<<endl;
}
return 0;
}