news 2026/4/1 1:50:12

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/3/26 20:15:04

Dify智能体平台集成Qwen3-8B:打造个性化AI工作流

Dify智能体平台集成Qwen3-8B&#xff1a;打造个性化AI工作流 在企业纷纷寻求AI落地的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何在有限预算和算力条件下&#xff0c;构建真正可用、安全可控的智能应用&#xff1f;许多团队曾尝试接入GPT-4等云端大模型&#xff0c;…

作者头像 李华
网站建设 2026/3/28 6:42:51

AutoGPT镜像用户案例:一名自由职业者的工作流变革

AutoGPT镜像用户案例&#xff1a;一名自由职业者的工作流变革 在自由撰稿人的世界里&#xff0c;时间是最稀缺的资源。一个典型的项目周期往往从客户发来一句话需求开始&#xff1a;“写一篇关于AI教育趋势的深度分析。”接下来是漫长的资料搜集、框架搭建、内容撰写与反复修改…

作者头像 李华
网站建设 2026/3/27 19:06:14

分布式锁原理深度解析:从理论到实践

分布式锁原理深度解析&#xff1a;从理论到实践 一、为什么需要分布式锁&#xff1f;—— 先搞懂 “锁” 的场景延伸 在单机应用中&#xff0c;我们用synchronized&#xff08;Java&#xff09;、mutex&#xff08;C&#xff09;等本地锁就能解决多线程并发竞争资源的问题&am…

作者头像 李华
网站建设 2026/3/21 16:36:01

HuggingFace镜像网站加速技巧:快速拉取Qwen3-8B模型权重

HuggingFace镜像网站加速技巧&#xff1a;快速拉取Qwen3-8B模型权重 在大语言模型&#xff08;LLM&#xff09;日益普及的今天&#xff0c;越来越多开发者希望将强大的AI能力集成到本地项目中。然而&#xff0c;一个现实问题摆在眼前&#xff1a;当你兴冲冲地准备下载 Qwen3-8…

作者头像 李华
网站建设 2026/3/25 19:01:59

transformer模型详解之Qwen3-8B架构深度剖析

Qwen3-8B 架构深度剖析&#xff1a;轻量高效背后的工程智慧 在大模型“军备竞赛”愈演愈烈的今天&#xff0c;百亿甚至千亿参数的模型不断刷新着性能上限。然而&#xff0c;对大多数企业和开发者而言&#xff0c;真正困扰他们的从来不是“能不能做出更强的模型”&#xff0c;而…

作者头像 李华
网站建设 2026/3/28 15:26:35

AutoGPT项目依赖项更新策略:保持组件最新

AutoGPT项目依赖项更新策略&#xff1a;保持组件最新 在当今快速迭代的AI时代&#xff0c;一个看似不起眼的技术决策——如何管理开源项目的依赖项&#xff0c;往往决定了整个系统的生死存亡。以AutoGPT为例&#xff0c;这个曾引爆GitHub趋势榜的自主智能体项目&#xff0c;其核…

作者头像 李华