浙大数据结构:11-散列2 Hashing

news2024/11/29 5:41:26

这道题主要是小细节要把握,实际难度不大
机翻
在这里插入图片描述

1、条件准备

表大小,输入数据数

#include <iostream>
#include<vector>
#include<cmath>
using namespace std;
#define endl '\n'

int Size,n;

2、主函数

先输入数据,用isprime判断是否为质数直到Size变为质数。初始化表H
然后循环调用judge判断每个元素应输出什么,最后单独判断一次不输出空格

int main()
{
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>Size>>n;
  while(isprime(Size)==0)
  Size++;
  vector<int> H(Size,-1);
  while(--n)
  {
    judge(H);
    cout<<' ';
  }
  judge(H);
  return 0;
}

3、isprime函数

试除法判断质数

bool isprime(int num)
{
  if(num<2)return false;
  for(int i=2;i<=num/i;i++)
   if(num%i==0)return false;
    return true;
}

4、judge函数

输入值,算起始位置,没插过则插入。
否则用二次探测法,bios为正的偏置,f判断是否要输出-
如果探测次数超过了表的大小则取消探测。

void judge(vector<int>& H)
{
  int cur;cin>>cur;
    int idx=cur%Size;
    if(H[idx]==-1)
    {
      H[idx]=cur;cout<<idx;
      return;
    }
    int bios=1;int f=0;
    while(1)
    {
      if(sqrt(bios)>=Size)break;
      if(H[(idx+bios)%Size]==-1)
      {
        H[(idx+bios)%Size]=cur;cout<<(idx+bios)%Size;
        f=1;
        break;
      }
     bios=(sqrt(bios)+1);bios*=bios;
    }
    if(!f)cout<<'-';
}

5、总结

这道题难度不大,主要是处理小细节,只有正增量,什么时候不探测
完整代码如下

#include <iostream>
#include<vector>
#include<cmath>
using namespace std;
#define endl '\n'

int Size,n;

bool isprime(int num)
{
  if(num<2)return false;
  for(int i=2;i<=num/i;i++)
   if(num%i==0)return false;
    return true;
}
void judge(vector<int>& H)
{
  int cur;cin>>cur;
    int idx=cur%Size;
    if(H[idx]==-1)
    {
      H[idx]=cur;cout<<idx;
      return;
    }
    int bios=1;int f=0;
    while(1)
    {
      if(sqrt(bios)>=Size)break;
      if(H[(idx+bios)%Size]==-1)
      {
        H[(idx+bios)%Size]=cur;cout<<(idx+bios)%Size;
        f=1;
        break;
      }
     bios=(sqrt(bios)+1);bios*=bios;
    }
    if(!f)cout<<'-';
}
int main()
{
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>Size>>n;
  while(isprime(Size)==0)
  Size++;
  vector<int> H(Size,-1);
  while(--n)
  {
    judge(H);
    cout<<' ';
  }
  judge(H);
  return 0;
}

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

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

相关文章

目前web浏览器播放rtsp视频流,h5播放rtmp监控方案比较,代码测试

在web上实现播放rtsp/rtmp视频流&#xff0c;由于浏览器不 能自定义协议&#xff0c;不能直接播放&#xff0c;市面上充满各种方案&#xff0c;鱼龙混杂&#xff0c;主要方案有两种&#xff1a; 1&#xff0c;浏览器插件方案&#xff0c;vlc浏览器控件&#xff08;已过期&…

远翔原厂芯片设计开发软件:降压恒流共阳极无频闪调光芯片FP7126/7127/7128,舞台灯磁吸轨道灯智能家居应用方案

FP7126 FP7127 FP7128是平均电流模式控制的 LED 驱动 IC&#xff0c;具有稳定输出恒流的能力&#xff0c;优秀的负载调整率与高精度的电流控制。不用额外增加外部补偿元件&#xff0c;简化 PCB 板设计。FP7126 FP7127 FP7128可接受 PWM 数位调光&#xff0c;建议调光频率 0.1kH…

事务使用方法

为什么需要事务&#xff1a; 示例&#xff1a; 银行转账问题 假定资金从账户A转到账户B&#xff0c;至少需要两步 账户A的资金减少 然后账户B的资金相应增加。 示例 假定张三的账户有1000元&#xff0c;李四账户有1元 UPDATE bank set moneymoney-500 WHERE name张三; UPDA…

以价换量,豆包血拼AI的商业考量

“ 借豆包AI推出智能耳机&#xff0c;字节跳动再战智能硬件&#xff0c;仍面临研发、营销成本高企和商业模式不明确的挑战&#xff0c;这一新尝试充满变数。 ” 转载&#xff1a; 科技新知 原创 作者丨颜瞾 编辑丨蕨影 没有哪个赛道&…

I\O进程线程(Day27)

一、学习内容 IO基础 概念 程序与外部设备进行交换的信息过程 分类 标准IO 封装好的相关库函数、有缓冲区、文件指针eg&#xff1a;fprintf、fscanf、fputc、fgetc、fputs、fgets、fopen、fclose... 操作流程 FILE *fp通过fopen打开文件 使用fprintf、fputc、fputs、fwrite把在…

【Linux】Linux进程概念

冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成&#xff0c; 输入单元&#xff1a;包括键盘 , 鼠…

选GB28181还是RTSP?

好多开发者&#xff0c;搞不清楚什么时候用GB28181&#xff0c;什么时候用RTSP&#xff0c;本文就二者使用场景和区别&#xff0c;做个大概的探讨&#xff1a; 定义与性质&#xff1a; GB28181&#xff1a;是中国国家标准&#xff0c;全称为《公共安全视频监控联网系统信息传输…

安科瑞诚邀您参加2024新加坡亚洲数据中心展

Exhibition Time: October 09-10, 2024 展览时间&#xff1a;2024年10月09日-10日 Exhibition Hall: Sands Expo & Convention Center 展览馆&#xff1a;Sands Expo & Convention Center Exhibition Number: BASEMENT2-L16 展览号&#xff1a;BASEMENT2-L16 Add…

文献阅读(222) VVQ协议死锁

题目&#xff1a;VVQ: Virtualizing Virtual Channel for Cost-Efficient Protocol Deadlock Avoidance时间&#xff1a;2023会议&#xff1a;HPCA研究机构&#xff1a;KAIST request-reply协议死锁如下图所示&#xff0c;每个node收到request之后发送reply&#xff0c;但是想…

2020-11-06《04丨人工智能时代,新的职业机会在哪里?》

《香帅中国财富报告25讲》 04丨人工智能时代&#xff0c;新的职业机会在哪里&#xff1f; 1、新机会的三个诞生方向 前两讲我们都在说&#xff0c;人工智能的出现会极大地冲击现有的职业&#xff0c;从2020年开始&#xff0c;未来一二十年&#xff0c;可能有一半以上的职业都会…

人工智能与生活:探索科技未来的无限可能性

随着科技的不断进步&#xff0c;人工智能已经成为了我们日常生活中不可或缺的一部分。从智能手机到智能家居&#xff0c;从自动驾驶汽车到医疗诊断&#xff0c;人工智能已经渗透到了我们的方方面面。在这篇文章中&#xff0c;我们将从不同的角度探讨人工智能与生活的联系&#…

A股异动与IP数据地址关联分析

最近A股经历了一些显著的移动。在2024年10月9号&#xff0c;A股三大指数大幅下跌&#xff0c;沪指、深成指、和创业板指分别下跌6.62%、8.15%和10.59%。市场的复杂性和不确定性明显&#xff0c;也由此给我们提供了从IP数据地址角度进行分析的机会。 从市场的基本面来看&#xf…

windows10系统-设置账户密码有效期

操作系统: windows10 .a.打开windows10用户管理界面 windows R -> 输入 gpedit.msc ->确定 如下图所示; .b.点击Windows设置->安全设置->账户策略->密码策略 .c.选中密码最长有效期限&#xff0c;修改即可。 修改后示例如下 关于第一条&#xff1a;密码必须符…

Jmeter脚本录制、Badboy脚本录制

目录 Jmeter脚本录制 Badboy脚本录制 Jmeter脚本录制 1、首先添加一个http测试脚本记录器 2、选择目标控制器&#xff0c;把录制的内容放到的地方 3、分组&#xff0c;就是在录制的时候&#xff0c;每一步操作之间间隔方式&#xff0c;根据自己需要进行选择 4、开启浏览…

网站服务器监控:Lighttpd指标解读

监控易是一款功能强大的IT监控软件&#xff0c;它提供了全面的应用和业务监控解决方案&#xff0c;帮助用户实时监控各类IT资源和应用的状态&#xff0c;确保业务的连续性和稳定性。在网站服务器监控方面&#xff0c;监控易特别针对Lighttpd服务器进行了深入的监测&#xff0c;…

专利开放许可与知识产权保护的关系是什么?

专利开放许可在一定程度上是对知识产权保护制度的补充和拓展。知识产权保护的核心目标是鼓励创新&#xff0c;通过赋予专利所有者一定期限内的独占权&#xff0c;使其能够从创新成果中获得经济回报&#xff0c;从而激励更多的创新投入。 专利开放许可则为专利的应用和传播提供了…

C++17中的常用文件操作std::filesystem::directory_iterator【注意事项】

目录 疑问 代码 结果 疑问 怎么用呢&#xff1f;constauto& entry : std::filesystem::directory_iterator(mainFolderPath)中&#xff0c;entry 表示的是什么呢&#xff1f;是mainFolderPath里的文件夹名字吗&#xff1f;还是路径呢&#xff1f;【答案是路径】。我们打…

12 项 ECMAScript 提案的最新进展!

大家好&#xff0c;我是 ConardLi。 近日&#xff0c;ECMA 国际技术委员会 39&#xff08;TC39&#xff09;在东京召开了第 104 次大会&#xff0c;讨论了多项 ECMAScript&#xff08;JavaScript&#xff09;提案的进展情况&#xff0c;批准了其中多项提案进入下一个阶段。 「…

优选算法第一讲:双指针模块

优选算法第一讲&#xff1a;双指针模块 1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.查找总价格为目标值的两个商品7.三数之和8.四数之和 1.移动零 链接: 移动零 下面是一个画图&#xff0c;其中&#xff0c;绿色部分标出的是重点&#xff1a; 代码实现&am…

技术速递|VS Code Java 9月更新 - 大量 Spring 更新!Gradle 功能优化

作者&#xff1a;Nick Zhu 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 的九月更新&#xff01;在本篇博客中&#xff0c;我们将介绍一些重要的 Spring 功能更新和 Gradle 增强功能&#xff0c;让我们开始吧&#xff01; Spring 更新 …