B (1038) : DS哈希查找—二次探测再散列

文章目录

  • 一、题目描述
  • 二、输入与输出
    • 1.输入
    • 2.输出
  • 三、参考代码


一、题目描述

定义哈希函数为H(key) = key%11。输入表长(大于、等于11),输入关键字集合,用二次探测再散列构建哈希表,并查找给定关键字。


二、输入与输出

1.输入

在这里插入图片描述

3
11 8
18 25 11 19 20 3 10 13
7
17
26
2
0
25
24
11
11 6
9 23 26 10 16 18
9
10
24
16
13
6
4
8
10
24
11 3
0 3 28
14
27
27
21
14
22
24
7
7
28
16
1
25
1
3
19 17
27 28 26 25 6 11 18 22 29 20 0 19 14 13 10 23 15
9
16
5
21
14
26
18
10
21
8
11 7

2.输出

对每组测试数据,输出以下信息:

构造的哈希表信息,数组中没有关键字的位置输出NULL

对k个待查关键字,分别输出:

0或1(0—不成功,1—成功)、比较次数、查找成功的位置(从1开始)

11 NULL 13 25 3 NULL NULL 18 19 20 10
0 1
0 2
0 3
0 2
1 1 4
0 3
1 1 1
NULL 23 NULL NULL 26 16 NULL 18 NULL 9 10
1 1 11
0 1
1 1 6
0 1
0 1
0 3
0 1
1 1 11
0 1
0 NULL NULL 3 NULL NULL 28 NULL NULL NULL NULL
0 1
0 1
0 1
0 2
0 2
0 1
0 1
0 1
1 1 7
0 1
0 1
0 2
0 1
1 1 4

三、参考代码

#include <iostream>
#include <string>
#include<queue>
using namespace std;class HashList
{
public:int sum1, sum2;//sum1 表长  sum2 数据个数int* arr;HashList(){}HashList(int s1 ,int s2):sum1(s1),sum2(s2){arr = new int[s1];for (int i = 0; i < s1; i++){arr[i] = -1;}while (sum2--)//插入数据{int num;cin >> num;int di = 1;int index = num % 11;if (arr[index] == -1){arr[index] = num;continue;}while (1){int t1 = ((index + di * di) % sum1) % sum1;int t2 = ((index - di * di) % sum1) % sum1;while (t2 < 0){t2 += sum1;}//t2可能为负数,防止爆表if (arr[t1] == -1){arr[t1] = num;break;}else if (arr[t2] == -1){arr[t2] = num;break;}else{di++;}}}}void pri(){for (int i = 0; i < sum1; i++){if (arr[i] == -1){cout << "NULL";}else{cout << arr[i];}if (i == sum1 - 1){cout << endl;}else{cout << " ";}}}void FindNum(){int num;cin >> num;int findi = num % 11;int di = 1;int times = 1;if (arr[findi] == -1){cout << "0 1" << endl;}else if(arr[findi] == num){cout << "1 1 " << findi + 1 << endl;}else{while (1){times++;int t1 = ((findi + di * di) % sum1) % sum1;int t2 = ((findi - di * di) % sum1) % sum1;while (t2 < 0){t2 += sum1;}//t2可能为负数,防止爆表if (arr[t1] == num){cout << "1 " << times << " " << t1 + 1 << endl;break;}else if (arr[t1] == -1){cout << "0 " << times << endl;break;}times++;if (arr[t2] == num){cout << "1 " << times << " " << t2 + 1 << endl;break;}else if (arr[t2] == -1){cout << "0 " << times << endl;break;}di++;if (di > (sum1 / 2)){cout << "0 " << times << endl;break;}}}}
};int main()
{int sum;cin >> sum;while (sum--){int s1, s2;cin >> s1 >> s2;HashList h(s1, s2);h.pri();int s3;cin >> s3;while (s3--){h.FindNum();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户规模破亿!基于文心一言的创新应用已超4000个

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

1.3MySQL中的自连接

自己的表和自己连接&#xff0c;核心&#xff1a;一张表拆为两张一样的表。 语法&#xff1a;select 字段列表 from 表 [as] 表别名1,表 [as] 表别名2 where 条件...; 关于怎样把一个表拆分成一个表&#xff0c;只要给它们分别取别名就行 categoryidpidcategoryname21信息…

Analytify Pro Google Analytics Goals Addon谷歌分析目标插件

Analytify Pro Google Analytics Goals Addon谷歌分析目标插件是一款极其巧妙且具有开创性的工具&#xff0c;它赋予用户细致跟踪和全面分析其网站性能的卓越能力。有了这个非凡的插件&#xff0c;个人可以毫不费力地建立并认真监控他们的Google Analytics目标&#xff0c;从而…

conda环境下Could not build wheels for dlib解决方法

1 问题描述 在安装模型运行的conda环境时&#xff0c;出现如下问题&#xff1a; Building wheels for collected packages: basicsr, face-alignment, dlib, ffmpy, filterpy, futureBuilding wheel for basicsr (setup.py) ... doneCreated wheel for basicsr: filenamebasi…

记录一下亿级别数据入库clickhouse

需求背景 公司的业务主要是广告数据归因的&#xff0c;每天的pv数据和加粉数据粗粗算一下&#xff0c;一天几千万上亿是有的。由于数据量大&#xff0c;客户在后台查询时间跨度比较大的数据时&#xff0c;查询效率就堪忧。因而将数据聚合后导到clickhouse进行存储&#xff0c;…

32阵元 MVDR和DREC DOA估计波束方向图对比

32阵元 MVDR和DREC DOA估计波束方向图对比 一、原理 MVDR原理&#xff1a;https://zhuanlan.zhihu.com/p/457528114 DREC原理&#xff08;无失真响应特征干扰相消器&#xff09;&#xff1a;http://radarst.ijournal.cn/html/2019/3/201903018.html 主要参数&#xff1a; 阵…

完全适配各类中小医院专科医院和诊所的云HIS系统源码【前端:Angular+Nginx ,后台:SpringBoot】

云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景&#xff0c;并提升区域内应用的标准化与规范…

Java技术栈 —— Nginx的使用

Java技术栈 —— Nginx的使用 一、认识Nginx二、搭建Nginx环境2.1 在Ubuntu上安装Nginx 三、使用Nginx3.1 配置负载均衡(HTTP) 一、认识Nginx 企业需要运行多个相同的副本&#xff0c;并将负载分散在整个系统集群上&#xff0c;为了高性能的负载均衡&#xff0c;引入了Nginx代…

通过C++程序实现光驱的自动化刻录和读取

文章目录 ISO文件格式光盘的基本概念光盘种类特点DVDR光盘使用windows调用Linux调用Linux平台下用到的C库:读取设备驱动列表向光驱中写文件 数字存储媒体快速发展的今天&#xff0c;光驱的使用已经不像以前那样普及了。但是在数据备份、安装软件和操作系统、旧设备兼容等领域还…

PiflowX大数据流水线系统

PiflowX大数据流水线系统。支持分布式计算引擎flink和spark。以所见即所得的方式&#xff0c;实现大数据采集、处理、存储与分析流程化配置、运行与智能监控。 PiflowX基于Piflow&#xff08;PiFlow: 混合型科学大数据流水线系统&#xff0c;包含丰富的处理器组件&#xff0c;…

算法导论复习(七) 动态规划

动态规划一般用来求解最优化问题 设计一个动态规划算法一般有以下四步&#xff1a; 描述一个最优解的结构特征。递归地定义最优解的值。计算最优解的值&#xff0c;通常采用自底向上的方法。利用计算出的信息构造出一个最优解。 钢条切割问题 体现了动态规划的一个重要性质&a…

k8s 网络

还没有部署网络。 k8s的网络类型&#xff1a; k8s中的通信模式&#xff1a; 1&#xff0c;pod内部之间容器和容器之间的通信。 在同一个pod中的容器共享资源和网络&#xff0c;使用同一个网络命名空间。可以直接通信的。 2&#xff0c;同一个node节点之内不同pod之间的通信。…

大创项目推荐 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习YOLO抽烟行为检测 该项目较为新颖&#xff0c;适合作为竞赛课…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

具有出色的数据速率、SI8642BA-AUR、SI8642BB-AS1R、SI8641BB-B-IUR、SI8635BD-B-ISR低功耗数字隔离器

一、简介 Si86xx 超低功耗数字隔离器系列是CMOS器件&#xff0c;与传统隔离技术相比&#xff0c;具有出色的数据速率、传播延迟、功耗、尺寸、可靠性和外部BOM优势。这些产品的工作参数在宽温度范围内和整个设备使用寿命内保持稳定&#xff0c;便于设计和高度统一的性能。所有…

java毕业设计—基于SpringBoot的小米商城的设计与实现

1&#xff0c;绪论 1.1 背景调研 电子商城的建设&#xff0c;不仅仅是初级网上购物的实现&#xff0c;它能够有效地在Internet上构架安全的和易于扩展的业务框架体系&#xff0c;实现BToB&#xff08;企业对企业&#xff09;、BToC&#xff08;企业对用户&#xff09;以及CTo…

首次使用TypeScript,报错:无法重新声明块级范围变量(声明变量报错)

前几天在书写TypeScript代码时&#xff0c;出现了声明变量报错的情况&#xff0c;具体情况如下&#xff1a; let arr: number; arr 10; console.log(arr);报错如下&#xff1a; 解决方案&#xff1a; 在配置文件tsconfig.json中&#xff0c;配置如下代码&#xff1a; { &q…

【计算机毕业设计】SSM医疗药品采购系统

项目介绍 ssm医疗药品采购系统。主要功能有&#xff1a; 用户管理&#xff1a;管理员列表&#xff1b; 采购管理&#xff1a;采购列表&#xff1b; 药品出库&#xff1a;药品出库&#xff1b; 库存管理&#xff1a;库存统计&#xff1b; 数据维护&#xff1a;药品列表、仓库…

软件测试常见的面试题,这些题面试前看提高百分之60的通过率

01、您所熟悉的测试用例设计方法都有哪些&#xff1f;请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答&#xff1a;有黑盒和白盒两种测试种类&#xff0c;黑盒有等价类划分法&#xff0c;边界分析法&#xff0c;因果图法和错误猜测法。白盒有逻辑覆盖法&…

3D手势光流计算

GitHub - NVIDIA/flownet2-pytorch: Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 计算光流 conda create -n 3dgesture python3.8 conda activate 3dgesture ​pip install torch 1. import torch时报错ModuleNotFoun…