您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验:哈希表(SDUT 1480)

2014-06-14 22:46 302 查看

数据结构实验:哈希表


Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。

输入

单组数据,第一行数字n(1<=n<=100000)。

接下来有n个数字,每个数字不超过100000000

输出

出现次数最多的数字和次数。

示例输入

3
1 1 2


示例输出

1 2


提示

来源

cz

示例程序

哈希法的冲突运算。先挂后找~

#include <stdio.h>
#include <stdlib.h>
#define N 100000
int a[100000];
struct node
{
int date;
struct node *next;
}*h
;
void gua (int x)
{
int a=x%N;
struct node *p;
p=(struct node *)malloc(sizeof(struct node ));
p->date=x;
p->next=h[a];
h[a]=p;
}
int findx (int x)
{
int a = x%N;
int count  = 0;
for (struct node *p = h[a]; p; p = p->next)
{
if (p->date == x)
count ++;
}
return count ;
}
int main()
{
int n, i, x, flag, max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
gua (a[i]);
}
for(i=0;i<n;i++)
{
if(max<findx (a[i]))
{
max=findx (a[i]);
flag =i;
}
}
printf("%d %d\n",a[flag],max);
return 0;
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: