hdu 1004 hash map

2 篇文章 0 订阅

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1004

水题,拿来练练手.

Input
Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) -- the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.

A test case with N = 0 terminates the input and this test case is not to be processed.

Output
For each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.

Sample Input
  
  
5 green red blue red red 3 pink orange pink 0

Sample 
red

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值