【问题描述】
山山又开始颓了, 打开 steam 先看看玩什么。打开之后惊异的发现,这周这么多免费
游戏,不过看起来好多都玩过啊,不知道玩什么了,于是他浏览了下游戏,发现只有一个游
戏玩过几遍,其他几乎只玩过一遍的,也有根本没玩过的,鉴于 steam 上的免费游戏一般
都是奇葩游戏,所以他认为玩过次数最多的那个游戏一定更好玩,他就会玩玩过最多的游戏,
由于游戏名字太难记了,所以请你来统计一下他玩过的游戏记录,并且告诉他玩什么游戏。
【输入格式】
输入文件名为 steam.in。
第一行一个 n,一个 m,表示 n 个游戏,m 条游戏记录
接下来 m 行一行一个数字 ai,表示他玩的游戏名,保证每个游戏名等长
【输出格式】
输出文件名为 steam.out。
第一行输出一个数表示他这次要玩的游戏名,保证答案
样例:
输入:
4 4
213151541243213
415415436435343
213151541243213
643453251745433
输出:
213151541243213
其实这题我开始是用hash做的,但是错了,后来用的沈队叫我的map做的,算是我map的一个模板吧。
代码:
#include<iostream>
#include<cstdio>
#include<map>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define ll long long
#define il inline
#define db double
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
map<string,int>SS;
int times[10000045];
char ch[145];
int ans;
char hzr[145];
int p=31,t=10000007;
int main()
{
freopen("steam.in","r",stdin);
freopen("steam.out","w",stdout);
int n,m;
cin>>n>>m;
int len;
for(int i=1;i<=m;i++)
{
scanf("%s",ch);
if(i==1)
len=strlen(ch);
if(SS.count(ch)==0)
SS[ch]=1;
else
{
SS[ch]++;
if(SS[ch]>ans)
{
ans=SS[ch];
for(int j=0;j<len;j++)
hzr[j]=ch[j];
}
}
}
printf("%s\n",hzr);
return 0;
}