链接:http://acm.hdu.edu.cn/showproblem.php?pid=1004
水题,拿来练练手.
A test case with N = 0 terminates the input and this test case is not to be processed.
5 green red blue red red 3 pink orange pink 0
pink
STL map解决:
#include<iostream>
#include<stdio.h>
#include<string>
#include<map>
using namespace std;
#define N 1001
int main()
{
int test,i,j,num;
while(scanf("%d",&num))
{
map<string,int> Map;
if(num==0) break;
string temp;
for(i=1;i<=num;++i)
{
cin>>temp;
Map[temp]++;
}
map<string,int>::iterator p,m;
p=m=Map.begin();
for(;p!=Map.end();++p)
{
if(p->second>m->second)
m=p;
}
cout<<m->first<<endl;
}
}
Hash:
#include<iostream>
#include<stdio.h>
#include<vector>
#include<cstring>
using namespace std;
vector<string> a[100001];
int main()
{
int num,i,j,len,t,max=0,sum;
while(scanf("%d",&num))
{
char str[20];
char temp[20];
max=0;
if(num==0) break;
memset(a,0,sizeof(a));
for(i=1;i<=num;i++)
{
sum=0;
cin>>str;
len=strlen(str);
for(j=0;j<len;++j)
sum=sum+2*j*(str[j]-'0')*5;
sum=sum%100001;
a[sum].push_back(str);
if(a[sum].size()>max)
{
strcpy(temp,str);
max=a[sum].size();
}
}
cout<<temp<<endl;
}
return 0;
}