1078 Hashing
关键在于这句:Quadratic probing (with positive increments only) is used to solve the collisions.开始不懂二次探测,因此做不出来。所谓二次探测就是如果num%mSize被占坑了,就看看(num+1*1)%mSize有没有被占,还是被占,看(num+2*2)%mSize……如果一直到(num+(mSize-1)*(mSize-1))%mSize都被占,说明真的插不进去了。
AC代码
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>using namespace std;
typedef long long LL;const int maxn = 10007;
const int MOD = 1000000007;
const int INF = 1000000000;//INF:下确界
const LL SUP = (1LL<<63)-1;//SUP:上确界
const double eps = 1e-5;bool isPrime(int n){//判断一个十进制数是否为素数 if(n<=1)return false;for(int i=2;i<=(int)sqrt(1.0*n);i++){if(n%i==0)return false;}return true;
}int main(){int mSize,n;scanf("%d%d",&mSize,&n);if(!isPrime(mSize)){//不是素数,换成大于它的最小素数 for(int i=mSize;i<=maxn;i++){//maxn = 10^4+7是一个素数 if(isPrime(i)){mSize = i;break;}}}bool hashTable[maxn] = {0};int num;for(int i=0;i<n;i++){scanf("%d",&num);if(!hashTable[num%mSize]){printf("%d",num%mSize);hashTable[num%mSize] = true;}else{//二次探测bool noFound = true;for(int j=0;j<mSize;j++){int index = num+j*j;if(!hashTable[index%mSize]){printf("%d",index%mSize);hashTable[index%mSize] = true;noFound = false;break;}} if(noFound)printf("-");//满足if内的条件说明一直j加到mSize-1也没找到空位 }if(i!=n-1)printf(" "); }return 0;
}
1078 Hashing相关推荐
- PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...
- 1078. Hashing (25)-PAT甲级真题
1078. Hashing (25) The task of this problem is simple: insert a sequence of distinct positive intege ...
- PAT (Advanced Level) 1078. Hashing (25)
二次探测法.表示第一次听说这东西... #include<cstdio> #include<cstring> #include<cmath> #include< ...
- 1078 Hashing (25 分)【难度: 一般 / 知识点: 哈希表二次探测法】
https://pintia.cn/problem-sets/994805342720868352/problems/994805389634158592 不得不说,读了半天的假题,以为就是直接判断可 ...
- PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数
文章目录 题目分析 题目链接 题目分析 来源:acwing 本题的分析见另一道PAT的题目:PAT甲级1078 Hashing:[C++题解]哈希表.哈希表开放寻址法.二次探测法链接的题目就是让建立h ...
- PAT-1078 Hashing
1078 Hashing part 3, 3.1 自己解法 注意最后一个点需要处理二次探测 #include <iostream> using namespace std; #includ ...
- PAT甲级题目翻译+答案 AcWing(哈希表)
1048 Find Coins (25 分) 题意 : 给一序列,要求从中选出两个值使得它们的和恰好等于m,输出第一个值字典序最小且升序的方案 思路 : 看似O(n2)O(n^2)O(n2),其实可以 ...
- PAT (Advanced Level) Practice 题解代码 - II (1051-1100)
PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...
- 刷PAT甲级的各题思路、细节以及遇到的问题记录
1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...
最新文章
- Unsupervised Feature Selection in Signed Social Networks 阅读笔记
- vue-router使用next()跳转到指定路径时会无限循环
- Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题
- grldr 和 grldr.mbr 区别
- 建立单独的解决方案来开发DNN模块
- vscode搜索文件_VS Code 新图标来临 —— 侧边栏、文件管理器、搜索、调试等区域的图标迎来全新设计...
- android: 动态加载碎片布局的技巧
- 7-5-无向图生成树-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- Android开发笔记(一百一十九)工具栏ToolBar
- Nginx常用使用解读及配置
- java 简单数组_Java 数组分析及简单实例
- win7免费升级win10官方工具
- kali wifi密码 破解
- CAM350简单编辑gerber文件(【增加一条线】 【复制元素】 【删除元素】)
- php 阿里云短信对接,验证码使用
- 10KV变配电增容工程电力监控系统的设计与应用
- Python 快速设置 Excel 表格边框
- Java——自定义图片和居中
- python改变像素点颜色_更改像素颜色Python
- 快速复制软件哪个好用安全?支持一键复制粘贴的工具