news 2026/6/4 15:32:55

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/3 17:25:19

伦敦银站上历史高位,投资者的应对之道是什么?

历史是被用来打破的&#xff0c;当伦敦银价格强势站上历史高位&#xff0c;冲破了尘封多年的阻力线&#xff0c;一个新的时代或许正在开启。对于身处其中的投资者来说&#xff0c;这既是机遇的蓝海&#xff0c;也是未知的深渊。面对从未涉足的价格区域&#xff0c;传统的经验或…

作者头像 李华
网站建设 2026/6/3 18:55:35

vLLM镜像深度优化:支持GPTQ与AWQ量化,降低部署成本50%

vLLM镜像深度优化&#xff1a;支持GPTQ与AWQ量化&#xff0c;降低部署成本50% 在当前大模型应用爆发的背景下&#xff0c;企业面临的核心挑战不再是“有没有模型”&#xff0c;而是“能不能高效用好模型”。一个参数量达70亿甚至更大的语言模型&#xff0c;若以传统方式部署&am…

作者头像 李华
网站建设 2026/6/2 16:44:34

LobeChat能否运行TensorFlow.js模型?浏览器内推理尝试

LobeChat 能否运行 TensorFlow.js 模型&#xff1f;浏览器内推理尝试 在现代 AI 应用的演进中&#xff0c;一个越来越清晰的趋势是&#xff1a;智能正在从云端向终端迁移。用户不再满足于“发个问题、等几秒、收个答案”的交互模式&#xff0c;而是期望更实时、更私密、更具上下…

作者头像 李华
网站建设 2026/6/2 13:47:51

LobeChat插件系统全解析:如何扩展你的AI助手功能?

LobeChat插件系统全解析&#xff1a;如何扩展你的AI助手功能&#xff1f; 在今天的AI应用开发中&#xff0c;一个聊天界面是否“聪明”&#xff0c;早已不再只取决于背后的大模型能力。真正决定用户体验的&#xff0c;往往是前端能否灵活调用外部工具、实时获取数据、处理文件&…

作者头像 李华
网站建设 2026/6/4 6:55:11

当AI遇上售后服务:一场关于效率与体验的革命

从"人工排队"到"秒级响应"的蜕变 记得去年双十一&#xff0c;我朋友小张的电商店铺遭遇了一场"售后灾难"。订单量暴增300%&#xff0c;客服团队24小时轮班也应付不过来&#xff0c;客户投诉像雪花一样飞来。最夸张的时候&#xff0c;一个客户要…

作者头像 李华
网站建设 2026/6/3 8:41:33

Postman接口测试:如何导入 swagger 接口文档?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快在使用 postman 做接口测试过程中&#xff0c;测试工程师会往界面中填入非常多的参数&#xff0c;包括 url 地址&#xff0c;请求方法&#xff0c;消息头和消息体等…

作者头像 李华