• 7-42 整型关键字的散列映射 (25分)


    给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中。用线性探测法解决冲突。

    输入格式:

    输入第一行首先给出两个正整数N(≤)和P(≥的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。

    输出格式:

    在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。

    输入样例:

    4 5
    24 15 61 88
    
     

    输出样例:

    4 0 1 3

    代码:
    #include <cstdio>
    #include <map>
    
    using namespace std;
    
    int n,p,vis[2001],ans[1001],d;
    map<int,int> mp;
    int main() {
        scanf("%d%d",&n,&p);
        for(int i = 0;i < n;i ++) {
            scanf("%d",&d);
            if(mp.count(d)) {
                ans[i] = mp[d];
                continue;
            }
            int dd = d % p;
            while(vis[dd]) dd = (dd + 1) % p;
            vis[dd] = 1;
            ans[i] = dd;
            mp[d] = ans[i];
        }
        for(int i = 0;i < n;i ++) {
            if(i) putchar(' ');
            printf("%d",ans[i]);
        }
    }
  • 相关阅读:
    抽象工厂
    组合和继承
    Mysql 设置远程连接
    websocket
    redis 持久化
    django urls
    git gitignore
    Mysql 系统表
    cudnn升级之后caffe无法训练的问题
    python numpy初始化一个图像矩阵
  • 原文地址:https://www.cnblogs.com/8023spz/p/12292582.html
Copyright © 2020-2023  润新知