郑州网站推广策划一般通过男性
2026/1/13 11:23:49 网站建设 项目流程
郑州网站推广策划,一般通过男性,建设大型网站的公司,广东东莞智通人才市场这一题的大意是给出一个哈希表的大小#xff0c;如果不是质数#xff0c;就把它变成和它最近的大的质数。 然后给出N个数#xff0c;把这N个数插入到哈希表中#xff0c;如果不能插入输出#xff1a;x cannot be inserted. 然后给出M个数#xff0c;判断它们在不在哈希表…这一题的大意是给出一个哈希表的大小如果不是质数就把它变成和它最近的大的质数。然后给出N个数把这N个数插入到哈希表中如果不能插入输出x cannot be inserted.然后给出M个数判断它们在不在哈希表中并且统计找到它们需要查询的次数的平均值。当出现哈希冲突的时候采用平方探测法这一题我们只需要清楚平方探测法就好写剩下就是模拟哈希表的过程。平方探测法for(intk0;kmsize;k){if(hash[(xk*k)%msize]x){cnt;returncnt;}elseif(hash[(xk*k)%msize]0){cnt;returncnt;}else{cnt;}}就是加上一个k*k的平方。最终的代码按题意模拟即可完整代码如下#includebits/stdc.h#includeiostreamusingnamespacestd;intMSize;intN;intM;boolisprime(intx){if(x0||x1){returnfalse;}if(x2){returntrue;}for(inti2;isqrt(x)1;i){if(x%i0){returnfalse;}}returntrue;}intprime(intx){if(isprime(x)){returnx;}else{//找离x最近的质数for(intix1;i1e5;i){if(isprime(i)){returni;}}}}intquery(intx,intmsize,inthash[]){intcnt0;for(intk0;kmsize;k){if(hash[(xk*k)%msize]x){cnt;returncnt;}elseif(hash[(xk*k)%msize]0){cnt;returncnt;}else{cnt;}}if(cntmsize){returncnt1;}if(cnt0){return0;}}intmain(){cinMSizeNM;intmsizeprime(MSize);//因此哈希表的大小是5inthash[msize];memset(hash,0,sizeof(hash));for(inti0;iN;i){intkey;cinkey;if(hash[key%msize]0){hash[key%msize]key;}else{//说明发生哈希碰撞intk1;boolflag0;while(hash[(keyk*k)%msize]!0){if(kmsize){flag1;break;}k;}if(flag1){coutkey cannot be inserted.endl;}else{hash[(keyk*k)%msize]key;}}}intans0;for(inti0;iM;i){intx;cinx;inttquery(x,msize,hash);anst;}printf(%.1f\n,(double)ans/M);return0;}注意如果查找某一个值的时候发现在哈希表中的位置为空说明这个值不在哈希表中如果查询了所有可能的值但仍然没有查到某一个元素那么查询次数应该是哈希表大小1.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询