zoukankan      html  css  js  c++  java
  • 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]);
        }
    }
  • 相关阅读:
    SessionAttributes注解
    数据格式化
    数据类型转换器
    线程的常用方法总结
    线程生命周期
    分析配置DispatcherServlet类时load-on-startup标签作用
    springMVC的执行请求过程
    MyBatis之动态SQL
    MyBatis实现
    Spring框架中的JDK与CGLib动态代理
  • 原文地址:https://www.cnblogs.com/8023spz/p/12292582.html
Copyright © 2011-2022 走看看