1078. Hashing (25)
来源:互联网 发布:沈航网络自助 编辑:程序博客网 时间:2024/06/05 01:55
1. 原题: https://www.patest.cn/contests/pat-a-practise/1078
2. 思路:
题意:求散列地址,冲突解决方法是平方探测法。
思路:
不熟悉散列表的翻下书哈。
题目要求表长是大于等于给出长度的素数。
已AC。
思路:
不熟悉散列表的翻下书哈。
题目要求表长是大于等于给出长度的素数。
已AC。
3. 源码:
#include<iostream>#include<algorithm>//使用sqrt函数#include<vector>using namespace std;int N, len;//分别为元素个数, 给定的散列表长度vector<int> flag;//标记是否有元素int isPrime(int x);//是否素数int getSize(int x);//求出散列表长度int hashKey(int x);//求散列地址int main(void){//freopen("in.txt", "r", stdin);scanf("%d %d", &len, &N);len = getSize(len);//求出表长度flag.resize(len, 0);int key, pos;//分别为元素值, 散列地址for (int i = 0; i < N; i++){if (i != 0)printf(" ");scanf("%d", &key);pos = hashKey(key);if (pos == -1)//无法散列printf("-");elseprintf("%d", pos);}printf("\n");return 0;}int isPrime(int x)//是否素数{if (x == 1)return 0;for (int i = 2; i <= (int)sqrt(x); i++){if (x % i == 0)return 0;}return 1;}int getSize(int x)//求出散列表长度{if (isPrime(x) == 1)return x;int i;for (i = x + 1; i; i++){if (isPrime(i) == 1)break;}return i;}int hashKey(int x)//求散列地址{int val = x % len;//散列地址if (flag[val] == 0)//表示该地址为空{flag[val] = 1;return val;}int cnt = 0;//记录冲突次数int k = 0;while (k <= len / 2)//平方探测法的最大增量{cnt++;if (cnt % 2 == 1)//奇数次冲突{k++;val = (val + k*k) % len;}else//偶数次冲突{val -= k*k;while (val < 0)//使得val符合正常范围val += len;}if (flag[val] == 0){flag[val] = 1;return val;}}return -1;//无法散列}
0 0
- 1078. Hashing (25)
- PAT 1078. Hashing (25)
- pat 1078. Hashing (25)
- PAT 1078. Hashing (25)
- PAT 1078. Hashing (25)
- 1078. Hashing (25)
- 1078. Hashing (25)
- 1078. Hashing (25)
- 1078. Hashing (25)
- 1078. Hashing (25)
- PAT 1078. Hashing (25)
- PAT 1078. Hashing (25)
- 1078. Hashing (25)
- PAT 1078. Hashing (25)
- 1078. Hashing (25)
- 【PAT】1078. Hashing (25)
- 1078. Hashing (25)
- 1078. Hashing (25)
- HDU 1109 Run Away 模拟退火算法
- mysql int,datetime,timestamp时间戳、时间日期相关总结分析
- Spring MVC学习
- 380. Insert Delete GetRandom O(1)
- FEA大数据实践之亿级数据量处理
- 1078. Hashing (25)
- 数据库
- if __name__ == '__main__' 如何正确理解?
- 测试系统是大段还是小端存储的c代码
- Effective C++ 条款08:别让异常逃离析构函数
- Javascript中document.execCommand()的用法
- runtime心得
- 打印十字图 解题报告
- PHP-字符串操作