数据结构实验:哈希表
2017-08-02 17:03
162 查看
数据结构实验:哈希表
Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic
Problem Description
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。
Input
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000
Output
出现次数最多的数字和次数。
Example Input
3
1 1 2
Example Output
1 2
Hint
Author
cz
居然没超时………
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 100000000 int a[MAXN]; int main() { int n, b; scanf("%d", &n); memset(a, 0, sizeof(a)); for(int i=0;i<n;i++) { scanf("%d", &b); a[b]++; } int point = 0; int max = 0; for(int i=0;i<MAXN;i++) { if(a[i]>max) { max = a[i]; point = i; } } printf("%d %d\n", point ,max); return 0; }
哈希代码:
#include<stdio.h> #include<string.h> struct m { int data; int tim; struct m * next; } a[100001]; int addm(int n,int d) { m *p = &a ,*t; t = p; while (p != NULL) { if (p->data == d) { p->tim++; return 0; } p = p->next; if (t->next != NULL) t = t->next; } p = t; p->next = new m; p = p->next; p->data = d; p->tim = 1; p->next = NULL; return 0; } int imax; int fid (void) { int t = 0,n = 0,i; m *p; for (i = 0; i < 100000; i++) { p = &a[i]; while (p != NULL) { if (p->tim > t) { t = p->tim; n = p->data; }else if (p->tim == t) { if (p->data < n) { n = p->data; } } p = p->next; } } imax = n; return t; } int main() { int n,i,m,t; memset(a,0,sizeof (a)); scanf ("%d",&n); for (i = 0; i < n; i++) { scanf ("%d",&t); addm(t % 100000,t); } int num = fid(); printf ("%d %d\n",imax,num); return 0; }
相关文章推荐
- sdut 数据结构实验之查找五:平方之哈希表
- 数据结构实验:哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验:哈希表
- SDUTOJ 1480 数据结构实验:哈希表——链地址法处理冲突
- 3377 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找五:平方之哈希表(详解平方法解决哈希表冲突)
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验:哈希表(SDUT 1480)
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验:哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验:哈希表
- 数据结构实验之查找七:线性之哈希表
- 3377 数据结构实验之查找五:平方之哈希表