数据结构实验之查找五:平方之哈希表
来源:互联网 发布:汽车用品淘宝 编辑:程序博客网 时间:2024/06/18 04:27
Problem Description
给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1
Input
输入包含多组测试数据,到 EOF 结束。
每组数据的第1行给出两个正整数N(N <= 500)和P(P >= 2N的最小素数),N是要插入到哈希表的元素个数,P是哈希表表长;第2行给出N个无重复元素的正整数,数据之间用空格间隔。
Output
按输入数据的顺序输出各数在哈希表中的存储位置 (hash表下标从0开始),数据之间以空格间隔,以平方探测方法处理冲突。
Example Input
4 1110 6 4 159 1147 7 29 11 9 84 54 20 30
Example Output
10 6 4 53 7 8 0 9 6 10 2 1
Hint
Author
xam
#include<stdio.h>#include<string.h>#define L 550int s1[L];int s2[L];int main(){ int N, P; while(~scanf("%d%d", &N, &P)) { memset(s1, -1, sizeof(s1)); memset(s2, -1, sizeof(s2)); int u; int i, k, j; for(i = 0; i < N; i++) { scanf("%d", &u); k = u % P; if(s1[k] == -1) { s1[k] = u; s2[i] = u; } else { int di = 1; int z, f; z = di * di; f = k; j = 1; while(s1[f] != -1) { z = j * di * di; f = k + z; if(f >= P) { f = f - P; } if(j == -1) { di++; } j = -j; } s1[f] = u; s2[i] = u; } } for(i = 0; i < N; i++) { for(j = 0; j < L; j++) { if(s1[j] == s2[i]) { if(i == 0) { printf("%d",j); } else { printf(" %d", j); } } } } printf("\n"); } return 0;}写得不够简洁,欢迎各位提出改进建议
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
阅读全文
0 0
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- SDUT 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- sdutoj 3377 数据结构实验之查找五:平方之哈希表
- SDUT 3377 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- SDUTACM 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 数据结构实验之查找五:平方之哈希表
- 余光中老爷爷走好!!!
- JSONObject解析-json串中字典类型解析
- linux下非oracle用户访问数据库
- 大地坐标系转换为地心空间直角坐标系
- spring-boot-data-jpa
- 数据结构实验之查找五:平方之哈希表
- lambda函数是变成对集合进行排序的几种方式
- golang判断文件或文件夹是否存在
- js-完美物体运动框架
- WEEX,一次撰写,多端运行
- 洛谷 P1597 语句解析
- 伪知识之了解数据库中外键主键的区别以及含义持续更新:【内向即失败--王奕君】
- 手势识别代码详细说明2(衔接上一篇)
- 在Windows下编译Mapnik的依赖库