1、问题描述
输入每一组一共有多少个气球,以及每个气球的颜色,输入多组,以输入0结束,输出每组气球最多的颜色
2.思路
利用mulitmap,输入的颜色单词作为键值,累计相同颜色的数目作为实值,比较输出实键值.
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string,int>m;
int n,i;
string s;
map<string,int>::iterator pos1,pos2;
while(cin>>n)
{
if(n==0)break;
m.clear();
for(i=0;i<n;i++)
{
cin>>s;
if(m.find(s)!=m.end())
m[s]+=1;
else m[s]=1;
}
pos2=m.begin();
for(pos1=m.begin();pos1!=m.end();pos1++)
{
if(pos2->second>pos1->second)
pos2=pos2;
else pos2=pos1;
} //找出实值最大的键值并输出
cout<<pos2->first<<endl;
}
return 0;
}
3.体会
map的效率要比设置两个数组查找效率高的多。
出现的问题,输出键值用迭代子访问比较,不会写啊。后来发现跟比较两个数的大小是一样的。