题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2104
Let the Balloon Rise
题目大意:记录气球颜色出现最多的那个,并输出其颜色。
这题有多种思路,我这次是用hash做的。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1001;
unsigned int elfhash(char *key,int mod)
{
unsigned int h=0,g;
while(*key)
{
h=(h<<4)+*key++;
g=h&0xF0000000;
if(g)
h^=g>>24;
h&=~g;
}
return h%mod;
}
int main()
{
int n,t[maxn];
char s[15],ss[15];
while(scanf("%d",&n),n)
{
int MAX=0,tmp;
memset(t,0,sizeof(t));
while(n--)
{
scanf("%s",s);
tmp=elfhash(s,maxn);
t[tmp]++;
if(t[tmp]>MAX)
{
MAX=t[tmp];
strcpy(ss,s);
}
}
printf("%s\n",ss);
}
return 0;
}