zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    Ajax
    Linux安装SmartSVN及破解
    JQuery异步提交
    动画效果
    事件
    表单选择器
    DOM操作
    JQuery基础
    PHP环境配置
    DP--钢条切割
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13216276.html
Copyright © 2011-2022 走看看