AcWing 840. 模拟散列表
原题链接
简单
作者:
Bear_King
,
2021-02-24 22:51:39
,
所有人可见
,
阅读 264
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010,null = 0x3f3f3f3f;
int h[N];//哈希存储
//开放寻址法,传入一个要输入的数,返回一个哈希地址
int find(int x)
{
int k = (x % N + N) % N;
while(h[k] != null && h[k] != x)
{
k ++;
if(k == N) k = 0;
}
return k;
}
int main()
{
int n;
scanf("%d",&n);
//memset这个函数是按字节来赋值的,int有4个字节,所以把每个字节都赋值成0x3f以后就是0x3f3f3f3f。
memset(h,0x3f,sizeof h);
while(n --)
{
char op[2];
int x;
scanf("%s%d",op,&x);
int k = find(x);
if(*op == 'I') h[k] = x;
else
{
if(h[k] != null) puts("Yes");
else puts("No");
}
}
}