zoukankan      html  css  js  c++  java
  • 【算法笔记】A1022 Digital Library

    题意

      输入n本书的信息:id,书名,作者,关键字,出版社,出版年份。搜索图书,输出id。

    思路

      定义5个map<string, set<int> >,分别存放Title, Author, Word, Publishier, Year与id的映射关系,然后只需要考虑怎么输入就可以了。注意因为字符串和map的参数传递很慢,所以如果把查询写成函数,必须对参数进行引用,否则会导致运行超时。

    code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 map<string, set<int> > Title, Author, Word, Publishier, Year;
     4 void query(map<string, set<int> > &mp, string &str){
     5     if(mp.find(str) == mp.end()) cout<<"Not Found"<<endl;
     6     else{
     7         for(set<int>::iterator it = mp[str].begin(); it!=mp[str].end(); it++){
     8             printf("%07d
    ", *it);
     9         }
    10     }
    11 }
    12 int main(){
    13     int n, m, id, type;
    14     string tit, aut, word, pub, year, search;
    15     cin>>n;
    16     for(int i = 0; i < n; i++){
    17         cin>>id;
    18         getchar();
    19         getline(cin, tit);
    20         Title[tit].insert(id);
    21         getline(cin, aut);
    22         Author[aut].insert(id);
    23         while(cin>>word){
    24             Word[word].insert(id);
    25             char c = getchar();
    26             if(c == '
    ') break;
    27         }
    28         getline(cin, pub);
    29         Publishier[pub].insert(id);
    30         getline(cin, year);
    31         Year[year].insert(id);
    32     }
    33     cin>>m;
    34     for(int i = 0; i < m; i++){
    35         scanf("%d: ", &type);
    36         getline(cin, search);
    37         cout<<type<<": "<<search<<endl;
    38         if(type == 1) query(Title, search);
    39         else if(type == 2) query(Author, search);
    40         else if(type == 3) query(Word, search);
    41         else if(type == 4) query(Publishier, search);
    42         else if(type == 5) query(Year, search);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    python基础之for循环
    python基础之数据类型转换
    python基础之集合set
    python基础之元祖tuple
    python基础之字典dict
    python基础之列表list
    Java基础之数据类型、运算符、标识符
    Java 基础之面向对象
    Java基础之Javadoc的使用
    MYSQL基础之安装、启动、停止、添加、移除、初始化服务
  • 原文地址:https://www.cnblogs.com/chunlinn/p/10757425.html
Copyright © 2011-2022 走看看