一:题目

给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key)=Key将关键字映射到长度为P的散列表中。用线性探测法解决冲突。

输入格式:
输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。

输出格式:
在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。

输入样例:

4 5
24 15 61 88

输出样例:

4 0 1 3

二:思路

利用哈希表原理,进行存储数据,然后处理一个位置冲突问题

三:上码

#include<bits/stdc++.h>
using namespace std;int main(){int N,M;cin >> N >> M;int array[M];for( int i = 0; i < M; i++){array[i] = 10000;  //之所以  初始化为这么大 是为了解决 下标为0时,关键值也为0,如果 再出现一个余数为0的数,他本来的下标应为1,//array[i] = 0; //但如果我们初始化为0的话,他就会出现0  可以拿下方例子进行验证}for( int i = 0; i < N; i++){int temp;cin >> temp;int K = 1;int remainder = temp % M;while( array[remainder] != 10000 && array[remainder] != temp ){//如果是相同的元素则直接输出其在数组中的下标remainder = (temp + K)%M;K++;}K = 1;//为下次冲突做准备array[remainder] = temp;if( i != N - 1)cout << remainder << ' ';elsecout << remainder; }
}//4 5
//0 15 61 20

四:失败码

最近老这样,这个是我第一次写的码,测试数据没问题,就是超时了


#include<bits/stdc++.h>
using namespace std;int main(){int N,M;int flag = 0;cin >> N >> M;vector<int>v1(M);vector<int>v2;for( int i = 0; i < M; i++ ){v1[i] = -1;}for( int i = 0; i < N; i++ ){int temp;cin >> temp;int K = 1;int remainder = temp%M;if( v1[remainder] == -1 )v1[remainder] = temp;else if (v1[remainder] != temp){while( remainder < M ){remainder = (temp + K)%M;K++;}}v1[remainder] = temp;if( i != N -1 ){cout << remainder << ' ';}elsecout << remainder;}
}//5 5
//24 15 61 88 15

加油BOY!

7-42 整型关键字的散列映射 (25 分)(思路加详解)兄弟们 来呀 写题呀相关推荐

  1. 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的

    一:题目 7-43 字符串关键字的散列映射 (25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位 ...

  2. 字符串关键字的散列映射 (25 分)【详细解析】

    立志用最少的代码做最高效的表达 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余数法将整数映射 ...

  3. 案例5-1.4 字符串关键字的散列映射 (25分)(数据结构)(C语言实现)

    给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余数法将整数映射到长度为P的散列表中.例如将字符 ...

  4. 字符串关键字的散列映射

    7-14 字符串关键字的散列映射 (25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留 ...

  5. 数据结构PTA 案例5-1.4 字符串关键字的散列映射

    案例5-1.4 字符串关键字的散列映射 题目 解法 题目 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位 ...

  6. PTA字符串关键字的散列映射 (哈希表)

    给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余数法将整数映射到长度为P的散列表中.例如将字符 ...

  7. “查找”学习提纲(二)——树型查找和散列查找

    文章目录 前言 代码模板 二叉排序/查找/搜索树查找 适用 性能 代码模板 折半查找和二叉排序树查找总结 平衡二叉(排序)树/AVL树 构造相应层数的树至少需要的结点数 平衡调整的过程 平衡调整的类型 ...

  8. 数据结构PTA习题:11-散列4 Hashing - Hard Version逆散列问题 (30分)——散列+拓扑排序

    11-散列4 Hashing - Hard Version 逆散列问题 (30分) Given a hash table of size N, we can define a hash functio ...

  9. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解

    如何利用一维数组实现二维数组的多列自由升降序排序过程详解 本例只说明多列排序的实现方式,一维数组的排序已经有过讲解不在赘述.所以本文是在已经完成了一维数组排序的函数封装的基础上完善多列排序的过程的详解 ...

最新文章

  1. 数据科学| 蛋白向量分析
  2. 程序员能力矩阵 你属于哪一层?
  3. 【pmcaff】重磅干货,必读的扁平化设计技巧
  4. if with large data project
  5. A Windows Mobile GPS Application Sample – Using Fake GPS
  6. Nacos-Nacos和Eureka的对比
  7. 计算机教师专业发展论文,关于教师专业发展的计算机专业论文
  8. cross_compile = arm-linux-,cross compile grpc for arm
  9. 关系数据库——sql增删改
  10. linux xd命令,看Linux文件的内容:用cat,less,more,head,tail,nl,od,xxd,gv,xdvi命令
  11. 发那科攻丝回退参数_参数-Fanuc数控系统的攻丝拉拔动作倍率即回退速度倍率
  12. 外媒曝iPhone 13 CAD渲染图:对角后置摄像头布局
  13. panel垂直滚动条占用宽度_南开区垂直车库门车库门安装价格
  14. 【JavaScript】数学计算的函数与数字的格式化
  15. 什么是SQL Server中的数据库规范化?
  16. 问答| 为什么四轮驱动机器人(SSMR)的质心(COM)没有横向分速度vy呢?
  17. Python拷贝(深拷贝deepcopy与浅拷贝copy)
  18. python接口自动化登录后保存个人简介_python接口自动化三(登录及发帖)
  19. 网络安全技术入门到项目实战
  20. 诛仙服务器技能修改,诛仙私服422服务端个人修改版带补丁+虚拟机+教程+工具[模板源码]...

热门文章

  1. 【ArcGIS风暴】ArcGIS解决数字化之前创建图层时未定义坐标系而导致数据跑偏的问题
  2. C语言试题四之计算并输出3到n之间所有素数的平方根之和
  3. linux之写C代码出现warning: format not a string literal and no format arguments [-Wformat-security]
  4. 字符串之找到字符串的最大无重复字符串子串
  5. Android插件化开发之运行未安装apk的activity
  6. sql distinct 去重复 (mysql)
  7. hfss史密斯图_HFSS仿真工程实例 (微波器件).ppt
  8. php 点对点,浅析点对点(End-to-End)的场景文字识别
  9. 女朋友来大姨妈怎么办?
  10. 机械史上最复杂的巅峰之作,这才是最强大脑!