7-42 整型关键字的散列映射


题目链接这里
题目大意 :就是写一个线性探测的散列

然鹅,我不会写(?)我一共错了两个地方

  1. 有冲突的情况下,就是线性探查然后往后找,但是我之前写的是t++,应该是t = (t+1)%p;...
  2. 在有重复关键字的时候,重复的那个值不应该放到散列表里面...也就是应该线性探查的时候碰到相同的跳出来就可以了...(别忘了散列是干什么的啊喂!查找!

正确代码:

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main(void)
{
	int n, p;
	scanf("%d%d", &n, &p);
	vector<int> s(p, 0);
    vector<int> flg(p,0);
	for (int i = 0; i < n; i++)
	{
		int a;
		scanf("%d", &a);
		int t = a%p;
		while (flg[t] != 0 && s[t] != a)
			t = (t+1)%p;
		s[t] = a;
        flg[t] = 1;
		printf("%d", t);
		if (i != n - 1)
			printf(" ");
	}
}
相关推荐
Shadow(⊙o⊙)4 分钟前
Linux基础IO-1.0——open、close、read及write-深入手搓分析!
linux·运维·服务器·开发语言·c++·学习
小小de风呀9 分钟前
de风——【从零开始学C++】(九)—vector的基本使用
开发语言·c++
仍然.9 分钟前
算法题目---队列+宽搜(BFS)
算法·宽度优先
AbandonForce13 分钟前
从入门到入土:二分查找算法
数据结构·算法
L_090716 分钟前
【C++】数据结构之哈希表(散列表)
数据结构·c++·散列表
仰泳之鹅18 分钟前
【C语言】动态内存管理
c语言·数据结构·算法
心中有国也有家21 分钟前
CANN 学习新范式:cann-learning-hub 如何让昇腾入门不再「劝退」
人工智能·经验分享·笔记·学习·算法
LB211223 分钟前
C++通讯录课设(西安石油大学)
开发语言·c++·算法
AI算法沐枫23 分钟前
机器学习知识点:正则化
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
手写码匠24 分钟前
从零实现一个轻量级向量搜索引擎(Python 版)
人工智能·深度学习·算法·aigc