哈希(hash) 之 开放地址法(poj)
来源:互联网 发布:linux 司机售票员问题 编辑:程序博客网 时间:2024/05/22 09:48
#include <iostream>#include<stdio.h>using namespace std;const int size=20345677;const int M=1000000000;const int key=1357;typedef struct Hash{ int val; int cp;}Hash;Hash hash[size];// 线性探测再散列,为啥全部加M呢,因为 n 可能为-2 的28次方void insert(int n){哈希表(散列表)开放寻址法:包括 线性探查(如本文);二次探查(加平方);双重散列。把关键字从非自然数转化为自然数N,字符串的一般用ELFHash()更搞笑;开放地址法在删除方面不如链接法(链表法),他不能够随意的删掉一个元素而不做任何处理,否则查找同一个映射的元素将失败开放地址法是将所有的元素都放在散列表中,装载因子绝对不会超过1. int t=n; n=(n+M)%size; while(hash[n].val!=M&&hash[n].val!=t) { n=(n+key)%size; } hash[n].val=t; hash[n].cp++;}int search(int n){ int t=n; n=(n+M)%size; while(hash[n].val!=M&&hash[n].val!=t) { n=(n+key)%size; } if(hash[n].val==M) return 0; else return hash[n].cp;}int main(){ int n; int i,j; int a[4005],b[4005],c[4005],d[4005]; scanf("%d",&n); int z=0; for(i=0;i<n;i++) { scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]); } for(i=0;i<size;i++) { hash[i].val=M; hash[n].cp = 0; } for(i=0;i<n;i++) for(j=0;j<n;j++) { insert(a[i]+b[j]); } for(i=0;i<n;i++) for(j=0;j<n;j++) { z+=search(-(c[i]+d[j])); } printf("%d\n",z); return 0;}
0 0
- 哈希(hash) 之 开放地址法(poj)
- Hash-开放地址法
- HASH表(采用开放地址法处理hash冲突)
- hash 开放地址法源码
- Hash表(2)——开放地址法
- hash(开放地址法解决冲突)
- 【hash表】两种实现(链地址法,开放地址法)
- 哈希(hash) 之插入和查找(链地址法)
- hash之开放定址法解决冲突
- 哈希(hash) 之 hash的插入和查找(链地址法)
- 开放定址Hash法
- 哈希表,开放地址法之再哈希代码(JAVA)
- 哈希表,开放地址法之线性探测代码(JAVA)
- 哈希表-开放地址法之线性探测代码(JAVA)
- 哈希表-开放地址法之线性探测
- POJ 2002 Squares hash+链地址法处理冲突
- 模拟哈希(开放地址法)
- 开放地址法
- 浏览器从下载文档到显示页面的过程是个复杂的过程
- Android ViewquPager取消预缓存及重新打包android-support-v4.jar的方法
- 循环队列
- 訪西山朝陽古寺
- 标准的git命令使用流程
- 哈希(hash) 之 开放地址法(poj)
- 静态链接库和动态链接库
- 【Git管理】Git 远程操作
- apache.commons.lang.StringUtils&ArrayUtils
- WoSign数字证书产品有何特别优势? ---- UTN-WoSign根证书系统
- PAT 1078. Hashing (25)
- C和C++中如何互相调用(#ifdef __cplusplus)
- 原始图像数据
- 太阳无限哈哦一