您的位置:首页 > 其它

hdu 1800

2015-09-18 17:44 344 查看
思路:可看做求所有出现的数中次数最高的 次数,用hash的方法, 这里练一下模板

#include <iostream>
#include <stdio.h>
#include <cstring>
#define MOD 1000007
#define base 31
#define N 1000009
using namespace std;

struct note
{
int v,cnt,next;
}_hash
;
int k;
int head
;
void insert(int key)
{
int tmp=key%MOD;
_hash[k].v=key;
_hash[k].cnt=1;
_hash[k].next=head[tmp];
head[tmp]=k++;
}
int find(int key)
{
int tmp=key%MOD;
if(head[tmp]!=-1)
{
_hash[head[tmp]].cnt++;
return _hash[head[tmp]].cnt;
}
return 0;
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF)
{
k=0;
memset(head,-1,sizeof(head));
char f[40];
int ret=1;
for(int i=0;i<n;i++)
{
int tmp=0;
scanf("%s",f);
for(int j=0;j<strlen(f);j++)
{
tmp=tmp*base+(f[j]-'0');
}
tmp=tmp&0x7fffffff;
int val;
if(val=find(tmp))
ret=max(ret,val);
else
insert(tmp);
}
printf("%d\n",ret);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: