news 2026/6/10 21:04:51

PAT 1145 Hashing - Average Search Time

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PAT 1145 Hashing - Average Search Time



这一题的大意是给出一个哈希表的大小,如果不是质数,就把它变成和它最近的大的质数。
然后给出N个数,把这N个数插入到哈希表中,如果不能插入输出:x cannot be inserted.
然后给出M个数,判断它们在不在哈希表中,并且统计找到它们需要查询的次数的平均值。
当出现哈希冲突的时候,采用平方探测法
这一题我们只需要清楚平方探测法就好写,剩下就是模拟哈希表的过程。
平方探测法:

for(intk=0;k<msize;k++){if(hash[(x+k*k)%msize]==x){cnt++;returncnt;}elseif(hash[(x+k*k)%msize]==0){cnt++;returncnt;}else{cnt++;}}

就是加上一个k*k的平方。
最终的代码按题意模拟即可:
完整代码如下:

#include<bits/stdc++.h>#include<iostream>usingnamespacestd;intMSize;intN;intM;boolisprime(intx){if(x==0||x==1){returnfalse;}if(x==2){returntrue;}for(inti=2;i<sqrt(x)+1;i++){if(x%i==0){returnfalse;}}returntrue;}intprime(intx){if(isprime(x)){returnx;}else{//找离x最近的质数for(inti=x+1;i<=1e5;i++){if(isprime(i)){returni;}}}}intquery(intx,intmsize,inthash[]){intcnt=0;for(intk=0;k<msize;k++){if(hash[(x+k*k)%msize]==x){cnt++;returncnt;}elseif(hash[(x+k*k)%msize]==0){cnt++;returncnt;}else{cnt++;}}if(cnt==msize){returncnt+1;}if(cnt==0){return0;}}intmain(){cin>>MSize>>N>>M;intmsize=prime(MSize);//因此哈希表的大小是5inthash[msize];memset(hash,0,sizeof(hash));for(inti=0;i<N;i++){intkey;cin>>key;if(hash[key%msize]==0){hash[key%msize]=key;}else{//说明发生哈希碰撞intk=1;boolflag=0;while(hash[(key+k*k)%msize]!=0){if(k>=msize){flag=1;break;}k++;}if(flag==1){cout<<key<<" cannot be inserted."<<endl;}else{hash[(key+k*k)%msize]=key;}}}intans=0;for(inti=0;i<M;i++){intx;cin>>x;intt=query(x,msize,hash);ans+=t;}printf("%.1f\n",(double)ans/M);return0;}

注意如果查找某一个值的时候,发现在哈希表中的位置为空,说明这个值不在哈希表中,如果查询了所有可能的值,但仍然没有查到某一个元素,那么查询次数应该是哈希表大小+1.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:40:36

中国2000-2024年500m分辨率逐月叶面积指数(LAI)数据集

一、数据介绍 数据名称&#xff1a;MOD15A2H叶面积指数&#xff08;LAI&#xff09;数据 时间跨度&#xff1a;2000-2024年&#xff08;2000年2月-2024年12月】2020缺1月&#xff09; 空间分辨率&#xff1a;500m 坐标系&#xff1a;GCS_WGS_1984 数据格式&#xff1a;Tif…

作者头像 李华
网站建设 2026/6/10 13:55:13

AutoGPT如何避免陷入无限循环?防呆机制设计原理

AutoGPT如何避免陷入无限循环&#xff1f;防呆机制设计原理 在当前大型语言模型&#xff08;LLM&#xff09;快速演进的背景下&#xff0c;AI智能体正从“被动应答”走向“主动执行”。AutoGPT作为早期自主代理&#xff08;Autonomous Agent&#xff09;的代表项目&#xff0c;…

作者头像 李华
网站建设 2026/6/10 14:10:42

LobeChat功能全解析:插件、角色预设与多模型接入实战

LobeChat功能全解析&#xff1a;插件、角色预设与多模型接入实战 在企业开始将大语言模型&#xff08;LLM&#xff09;深度嵌入日常运营的今天&#xff0c;一个普遍的困境浮出水面&#xff1a;如何在不牺牲数据安全的前提下&#xff0c;让AI真正“动起来”&#xff1f;市面上的…

作者头像 李华
网站建设 2026/6/10 2:14:46

Qwen3-14B支持32K长上下文,轻松应对长文档分析任务

Qwen3-14B&#xff1a;32K长上下文如何重塑企业级AI应用 在金融分析师面对一份上百页的年报时&#xff0c;最怕什么&#xff1f;不是数据复杂&#xff0c;而是模型“记不住开头”。传统大语言模型处理长文本时常常顾此失彼——读到第80页&#xff0c;早已忘了第5页的关键定义。…

作者头像 李华
网站建设 2026/6/10 14:41:40

7、基于GEE 平台的 VIIRS 夜间灯光监测工具

VIIRS 夜间灯光监测工具 这是一个基于 Google Earth Engine (GEE) 的交互式应用程序&#xff0c;用于监测、分析和下载 NOAA VIIRS 月度夜间灯光数据。该工具集成了动态可视化、时序分析、GIF 动图生成以及批量数据导出到 Google Drive 的功能。 ✨ 主要功能自定义时间范围: 支…

作者头像 李华