• PAT 甲级 1145 Hashing


    这题有点坑爹,数据结构课没有认真听的我看见平方探测法真是一脸懵。

    思路:

    1.平方探测可以解决线性探测中的一次聚集问题,常用的函数是f(i)=±i2,题目所说是正增长,则f(i)=i2
    2.在i的范围这块,我一直有疑问,i的范围应该是0~TableSize-1,因为(a+TableSize2)%TableSize==a,到TableSize多此一举,但是这题的范围就是到TableSize;

    代码:

    #include<iostream>
    #include<vector>
    #include<cmath>
    using namespace std;
    bool isPrime(int n)
    {
    	if(n<2) return false;
    	int sqr=(int)sqrt(n*1.0);
    	for(int i=2;i<=sqr;i++)
    		if(n%i==0) return false;
    	return true;
    }
    int main()
    {
    	int msize,n,m,value,j;
    	float count=0;
    	scanf("%d%d%d",&msize,&n,&m);
    	while(!isPrime(msize)) msize++;
    	vector<int> v(msize);
    	for(int i=0;i<n;i++)
    	{
    		scanf("%d",&value);
    		for(j=0;j<msize;j++)
    			if(v[(value+j*j)%msize]==0)
    			{
    				v[(value+j*j)%msize]=value;
    				break;
    			}			
    		if(j==msize)
    			printf("%d cannot be inserted.
    ",value);
    	}
    	for(int i=0;i<m;i++)
    	{
    		scanf("%d",&value);
    		for(j=0;j<=msize;j++)
    		{
    			count++;
    			if(v[(value+j*j)%msize]==value||v[(value+j*j)%msize]==0) break;
    		}
    	}
    	printf("%.1f",count/m);
    	return 0;
    }
    
  • 相关阅读:
    防止重复点击
    刷新当前页面的几种方法
    PHP删除数组中空值
    json转化数组
    两个不能同时共存的条件orWhere查询
    SQLSTATE[42000]
    laravel一个页面两个表格分页处理
    Hash::make与Hash::check
    unbind()清除指定元素绑定效果
    二级联动
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12309099.html
Copyright © 2020-2023  润新知