题目描述

给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1

输入

输入一组测试数据,数据的第1行给出两个正整数N(N <= 500)和P(P >= 2N的最小素数),N是要插入到哈希表的元素个数,P是哈希表表长;第2行给出N个无重复元素的正整数,数据之间用空格间隔。

输出

按输入数据的顺序输出各数在哈希表中的存储位置 (hash表下标从0开始),数据之间以空格间隔,以平方探测方法处理冲突。

示例输入

4 11
10 6 4 15
9 11
47 7 29 11 9 84 54 20 30

示例输出

10 6 4 5
3 7 8 0 9 6 10 2 1

提示

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int a[500];//存储下标;
    int n,p,i,j,num,h;
    int Hash[500];//哈希表;
    while(~scanf("%d%d",&n,&p))
    {
        memset(Hash,-1,sizeof(Hash));//初始化哈希表;
        int sum=0;//统计数组元素个数;
        for(i=0;i<n;i++)
        {
            scanf("%d",&num);
            h=num%p;//取余数;
            if(Hash[h]==-1)
            {
                Hash[h]=num;
                a[sum++]=h;//记录余数下标;
            }
            else
            {
                g=h;
                for(j=1;j<=sqrt(p);j++)
                {
                    h=(g+j*j)%p;//向表的后面找;
                    if(Hash[h]==-1)
                    {
                        Hash[h]=num;
                        a[sum++]=h;
                        break;
                    }
                    h=(g-j*j)%p;//向表的前面找;
                    if(Hash[h]==-1)
                    {
                        Hash[h]=num;
                        a[sum++]=h;
                        break;
                    }
                }
            }
        }
        for(i=0;i<sum;i++)
            if(i!=sum-1)
            printf("%d ",a[i]);
        else
            printf("%d\n",a[i]);
    }
    return 0;
}

数据结构实验之查找五:平方之哈希表相关推荐

  1. e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗

    #新人扶持计划# Hash表在面试中经常被问到,今天我们来了解下. Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组.链表以及二叉排序树等相比较有很明显的区别,它能够 ...

  2. e - 数据结构实验之查找五:平方之哈希表_leetcode算法之哈希表

    今天该来盘一盘 哈希表 这类题目 分类别解析leetcode上的一些相关的例题路,代码采用C++与python实现. 哈希表 哈希表是一种很有用的数据结构, 其作用主要是以空间换时间, 在c++中主要 ...

  3. SDUT 3377 数据结构实验之查找五:平方之哈希表

    数据结构实验之查找五:平方之哈希表 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 给定的一组 ...

  4. E数据结构实验之查找五:平方之哈希表

    Description 给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=± ...

  5. 数据结构实验之链表五:单链表的拆分-sdut

    数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...

  6. SDUT-3378_数据结构实验之查找六:顺序查找

    数据结构实验之查找六:顺序查找 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无序序列里,查找与给定关键字 ...

  7. 数据结构实验之查找七:线性之哈希表

    数据结构实验之查找七:线性之哈希表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定 ...

  8. SDUT 3379 数据结构实验之查找七:线性之哈希表

    数据结构实验之查找七:线性之哈希表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 根据给定的一系列整数关键字和素数p, ...

  9. 数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次

    原题链接:oj3344 数据结构实验之二叉树五:层序遍历 Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. In ...

最新文章

  1. Sql Server之旅——第十四站 深入的探讨锁机制
  2. 挂代理无法访问网页了怎么办_搜索引擎蜘蛛不能爬取网页的原因有哪些
  3. BIO和NIO的区别
  4. WPF实现聚光灯效果
  5. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(19.11.21更新)
  6. python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案
  7. linux下grep文件内容搜索工具及基本正则表达式详解
  8. 简单描述HTML相对路径与绝对路径(转)
  9. 工程之星位置服务器,工程之星5.0中求坐标转换参数需要谨记这七大点!
  10. java网上订餐系统开题报告_网上订餐系统的设计与实现
  11. java8新特性有哪些
  12. ib网卡无法启动,需要修改为以太网模式
  13. 去文字,如何用PS快速去除图片上的文字
  14. google license key格式不对
  15. 系统自带恶意软件清理助手
  16. pwnable.kr_mistake
  17. Flutter--使用相机
  18. Go语言解决读取文件乱码
  19. 解决:TypeError: Descriptors cannot not be created directly
  20. 百度移动营销页常见问题汇总,99%的人不知道

热门文章

  1. 现代软件工程 第六章 【敏捷流程】练习与讨论
  2. python中下拉菜单大小_自动化测试——Selenium+Python之下拉菜单的定位
  3. 对没有标记为安全的activex控件进行初始化和脚本运行_RASP攻防 —— RASP安全应用与局限性浅析...
  4. ajax实现一个前台的进度条,前台ajax实现上传文件并且有进度条
  5. long mode 分页_在Spring Boot中使用Spring-data-jpa实现分页查询(转)
  6. mysql群集配置_CentOS7 - 建立一个MySQL集群
  7. 学习C/C++的简单方法
  8. python 数字类型和字符串类型的相互转换_python 数字类型和字符串类型的相互转换...
  9. git两个账号切换_多个git账号之间的切换
  10. H3C批量收集服务器信息,H3C设备服务器采集参数认证过程(包含redfish和restfull协议)...