zoukankan      html  css  js  c++  java
  • 【hash表】图书管理

    【哈希和哈希表】图书管理

    题目描述

    图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入。为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统。
    该系统需要支持 2 种操作:
    • add(s) 表示新加入一本书名为 s 的图书。
    • find(s) 表示查询是否存在一本书名为 s 的图书。

    输入

    第一行包括一个正整数 n(n≤30000),表示操作数。 以下n行,每行给出 2 种操作中的某一个指令条,指令格式为:
    add s
    find s
    在书名s与指令(add,find)之间有一个隔开,我们保证所有书名的长度都不超过200。可以假设读入数据是准确无误的。

    输出

    对于每个 find(s) 指令,我们必须对应的输出一行 yes 或 no,表示当前所查询的书是否存在于图书馆内。
    注意:一开始时图书馆内是没有一本图书的。并且,对于相同字母不同大小写的书名,我们认为它们是不同的。

    【题解】:

      利用链式前向星来模拟hash表的链,同时使用了双hash结构,代码是抄袭书本的。。。。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N = 3e5+10;
     4 const int Mod1 = 1e6+3;
     5 const int Mod2 = 1e6+9;
     6 const int p1 = 47 ;
     7 const int p2 = 79 ;
     8 int cnt = 0 , Next[N+5],Head[Mod2+10],W[N];
     9 void Insert(int x,int y ){
    10     Next[++cnt] = Head[x] ;
    11     Head[x] = cnt ;
    12     W[cnt] = y ;
    13 }
    14 bool Query(int x,int y){
    15     for(int i=Head[x];i;i=Next[i]){
    16         if( W[i] == y ) return true;
    17     }
    18     return false ;
    19 }
    20 int main()
    21 {
    22     ios_base :: sync_with_stdio(NULL);
    23     cin.tie(0),cout.tie(0);
    24     int n;
    25     char op[10],s[5006];
    26     cin >> n ;
    27     while (n--) {
    28         cin >> op ;
    29         cin.getline(s,sizeof(s));
    30         int len = strlen(s);
    31         long long  sum1 = 0 ,sum2 = 0;
    32         for(int i=0;i<len;i++){
    33             sum1 = ( sum1 * p1 + s[i] ) % Mod1;
    34             sum2 = ( sum2 * p2 + s[i] ) % Mod2;
    35         }
    36         if ( op[0] == 'a' ){
    37             Insert(sum1,sum2);
    38         }else{
    39             if( Query(sum1,sum2) ){
    40                 printf("yes
    ");
    41             }else{
    42                 printf("no
    ");
    43             }
    44         }
    45     }
    46     return 0;
    47 }
    图书管理
  • 相关阅读:
    使用Emacs:生存篇
    编程之美:平面最近点对
    SOA体系结构之基础培训教程-大纲篇
    DNS:域名系统
    IIS7中 ASP.NET授权功能如何实现对静态文件的控制
    JVM内存管理学习总结(一)
    FMX中实现PostMessage的方法
    ddd
    4部门明确软件IC产业企业所得税优惠政策
    不要过分相信虚拟机,特别是网络连接方面
  • 原文地址:https://www.cnblogs.com/Osea/p/11325337.html
Copyright © 2011-2022 走看看