数据结构实验:哈希表
Time Limit: 1000MS Memory limit: 65536K
题目描述
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。
输入
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000
接下来有n个数字,每个数字不超过100000000
输出
出现次数最多的数字和次数。
示例输入
3 1 1 2
示例输出
1 2
#include <stdio.h> #include <string.h> #define T 100000 int s[T+1],shu[T+1]; int main() { int n,k,tp,l1,l2; int i; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&k); tp=k%T; while(1) { if(k==s[tp]||s[tp]==0) { s[tp]=k; shu[tp]++; break; } else { tp++; } if(tp>=T) { tp=0; } } } l1=s[0]; l2=shu[0]; for(i = 1 ; i <T; i++) { if(l2 < shu[i] || (l2==shu[i] && l1 > s[i]) ) { l2 = shu[i] ; l1 = s[i] ; } } printf("%d %d\n",l1,l2); return 0; }