steam 字符串hash or map

【问题描述】
山山又开始颓了, 打开 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;
}

 

posted @ 2017-10-16 15:54  GSHDYJZ  阅读(544)  评论(0编辑  收藏  举报