题目链接: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;
}
本文介绍了一种利用哈希算法解决记录气球颜色出现最多次数的问题的方法,通过输入气球的颜色字符串,输出出现次数最多的颜色。
804

被折叠的 条评论
为什么被折叠?



