• A1078 Hashing (25分)(哈希表、平方探测法)


    一、技术总结

    1. 一个数素数的判断函数
    2. 就是关于哈希表的冲突问题,使用平方探测法解决;
    3. 使用两个数组,一个用于当前数字存储哈希表中的下标,一个是用于记录是否可以插入进哈希表;

    二、参考代码

    #include<iostream>
    #include<cmath>
    #include<vector>
    using namespace std;
    bool isPrime(int n){
    	if(n <= 1) return false;
    	int sqr = (int)sqrt(n);
    	for(int i = 2; i <= sqr; i++){
    		if(n % i == 0) return false;
    	}
    	return true;
    }
    int main(){
    	int m, n;
    	cin >> m >> n;
    	while(!isPrime(m)){
    		m++;
    	}
    	vector<int> v(n), hash(m);
    	for(int i = 0; i < n; i++){
    		scanf("%d", &v[i]);
    		int size = 0;
    		while(size < m){
    			if(hash[(v[i] + size * size) % m] != 0){
    				size++;
    			}else{
    				hash[(v[i] + size * size) % m] = 1;
    				v[i] = (v[i] + size * size) % m;
    				break;
    			}
    		}
    		if(size >= m) v[i] = -1;
    	}
    	for(int i = 0; i < n; i++){
    		if(i != 0) printf(" ");
    		if(v[i] != -1) printf("%d", v[i]);
    		else printf("-");
    	}
    	return 0;
    }
    
  • 相关阅读:
    spring源码怎么解决循环依赖?
    观察者模式
    单例模式
    Python 列表(List)
    python字符串(str)
    内置函数
    python运算符
    函数名的应用 闭包 迭代器
    生成器,推导式
    python的起源
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13216276.html
Copyright © 2020-2023  润新知