zoukankan      html  css  js  c++  java
  • PAT:1022. Digital Library (30) (部分正确,错最后两个)

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<map>
     4 #include<string>
     5 #include<set>
     6 #include<iostream>
     7 using namespace std;
     8 int n;        //n本书
     9 //标题、作者、关键字、出版社、出版年份与ID的映射
    10 map<string,set<int>> mpTITLE,mpAUTHOR,mpKEY,mpPUBLISHER,mpYEAR;
    11 
    12 void query(map<string,set<int>> &m,string Q)    //【skill】“&m”的引用符号是为了加快处理速度
    13 {
    14     if(m.find(Q)==m.end())
    15         printf("Not Found
    ");
    16     else
    17         for(set<int>::iterator it=m[Q].begin() ; it!=m[Q].end() ; ++it)    //【思维】m已经选好了是作者还是出版社之类的,it只要扫描这个类的set,按个输出就可以了
    18             printf("%d
    ",*it);                //【skill】it所指向的内容
    19 }
    20 
    21 int main()
    22 {
    23     scanf("%d",&n);
    24     int ID=-1;
    25     string title,author,key,publisher,year;
    26     for(int i=0 ; i<n ; ++i)
    27     {
    28         scanf("%d",&ID);
    29         char c=getchar();            //【caution】吸收换行符
    30         getline(cin,title);            //输入标题
    31         mpTITLE[title].insert(ID);
    32         getline(cin,author);
    33         mpAUTHOR[author].insert(ID);
    34         while(cin>>key)                //【skill】持续输入关键字的方法,cin也是按空格划分的
    35         {
    36             mpKEY[key].insert(ID);
    37             char d=getchar();        //【skill】取后面的字符,是空格,则还有key,是“
    则输入结束,break”
    38             if(d=='
    ')
    39                 break;
    40         }
    41         getline(cin,publisher);
    42         mpPUBLISHER[publisher].insert(ID);
    43         getline(cin,year);
    44         mpYEAR[year].insert(ID);
    45     }
    46     int q,num;
    47     scanf("%d",&q);
    48     for(int i=0 ; i<q ; ++i)
    49     {
    50         scanf("%d: ",&num);        //看看这样可否
    51         string Q;
    52         getline(cin,Q);
    53         printf("%d: %s
    ",num,Q.c_str());    //【skill】将Q转为可用printf输出的%s
    54         if(1==num)
    55             query(mpTITLE,Q);
    56         else if(2==num)
    57             query(mpAUTHOR,Q);
    58         else if(3==num)
    59             query(mpKEY,Q);
    60         else if(4==num)
    61             query(mpPUBLISHER,Q);
    62         else if(5==num)
    63             query(mpYEAR,Q);
    64  
    65 
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    CF528D Fuzzy Search
    P3489 付公主的背包
    有标号的DAG计数
    P4609 [FJOI2016]建筑师
    mds/journal.cc: 2929: FAILED assert解决
    Ceph根据Crush位置读取数据
    关于backfill参数建议
    rados put striper功能的调试
    Cephfs的文件存到哪里了
    为什么删除的Ceph对象还能get
  • 原文地址:https://www.cnblogs.com/Evence/p/4331265.html
Copyright © 2011-2022 走看看