您的位置:首页 > 其它

1078. Hashing (25)

2016-11-30 08:47 309 查看
1078. Hashing (25)

注意:题目要求用二次探测法(Quadratic probing)解决冲突

#include <bits/stdc++.h>
int hash[11024];
int isprime(int n)
{
if(n==1) return false;
for(int i=2;i*i<=n;++i)
if(n%i==0) return false;
return true;
}
int main()
{
int msize,n;
scanf("%d %d",&msize,&n);
while(!isprime(msize))
++msize;
while(n--)
{
int e,i;
scanf("%d",&e);
for(i=0;i<msize;++i)
{
if(!hash[(e+i*i)%msize])
{
hash[(e+i*i)%msize]=e;
printf("%d",(e+i*i)%msize);
break;
}
}
if(i==msize)printf("-");
if(n)printf(" ");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: