题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1004
题意:
先输入一个数字,代表着有几个字符串,然后输入字符串,找出出现此时最多的字符串并且输出(注意多组输入,输入0结束)
思路:
利用map进行字符串出现次数统计,然后设置一个数找出最大的值(注意设置的数要小于出现次数最小的数)
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<map>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n),n)
{
map<string,int>mp;//建立map
mp.clear();//将map清空,每循环一次,清空一次map
string a,b;
int maxn=-1;//设置一个最大值,设置的最大值小于最小的出现次数
for(int i=0; i<n; ++i)
{
cin>>a;
mp[a]++;//出现一样的字符串,map进行+1操作
if(maxn<mp[a]) //更新最大值,并记录出现最多的字符串
{
maxn=mp[a];
b=a;
}
}
cout<<b<<endl;
}
return 0;
}