寒假训练--二分哈希--数据结构实验:哈希表

来源:互联网 发布:ios开发没有mac怎么办 编辑:程序博客网 时间:2024/05/18 03:16

数据结构实验:哈希表

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

 单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000

输出

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

示例输入

31 1 2

示例输出

1 2

提示

 

来源

 cz

示例程序
#include <stdio.h>#define N 100000int s[N] , sum[N] ;int main(){    int i , n , tp , a ;    scanf("%d", &n);    for(i = 0 ; i < n ; i++)    {       scanf("%d", &a);       tp = a % N ;       if(tp < 0) tp += N ;       while(1)       {           if(s[tp]==a || s[tp]==0)           {               s[tp] = a ; sum[tp]++; break;           }           else           {               tp++;               if(tp >= N)                tp = 0 ;           }       }    }    int x , p ;    x = s[0] ; p = sum[0] ;    for(i = 1 ; i < N ; i++)    {        if(p < sum[i] || (p==sum[i] && x > s[i]) )        {            p = sum[i] ;            x = s[i] ;        }    }    printf("%d %d\n", x, p);}

0 0