1. 关键数据结构 map<string,vector<string> > mp[6] 其中mp[1]代表从书名映射到id(id可能无,可能不止一个,所以要用vector),mp[2]是从作者映射到id……mp[5]代表从year映射到id。

2. 卡住的第一个地方是读数据,好像读入整数和getline混合时,整数类型都不可以只是%d了,而是要%d%*c。

3. 另一个卡住的地方是对查询字符串的处理,得到子串的时候一开始substr()的第一个参数是3,就读不到字串,必须和find联合使用才行。

AC代码

#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>using namespace std;map<string,vector<string> > mp[6];
//1:title->id
//2:author->id
//3:keyword->id
//4:publisher->id
//5:year->idint main(){int book_n;scanf("%d%*c",&book_n);string id;string title;string author;string keywords,keyword;string publisher;string pubyear;for(int i=0;i<book_n;i++){getline(cin,id);getline(cin,title);getline(cin,author);getline(cin,keywords);getline(cin,publisher);getline(cin,pubyear);mp[1][title].push_back(id);mp[2][author].push_back(id);int len = keywords.length();int j=0;while(j<len){while(keywords[j]!=' '&&j<len){keyword+=keywords[j];j++;}mp[3][keyword].push_back(id);keyword.clear();j++;}mp[4][publisher].push_back(id);mp[5][pubyear].push_back(id);}int query_n;scanf("%d%*c",&query_n);for(int i=0;i<query_n;i++){string query,v_query;getline(cin,query);cout<<query<<endl;v_query = query.substr(query.find(" ")+1,query.length()-3);int idx = query[0]-'0';sort(mp[idx][v_query].begin(),mp[idx][v_query].end());for(vector<string>::iterator it = mp[idx][v_query].begin();it!=mp[idx][v_query].end();it++){cout<<*it<<endl;}if(!mp[idx][v_query].size())printf("Not Found\n");            }return 0;
}

1022 Digital Library相关推荐

  1. PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询

    文章目录 题目分析 题目链接 题目分析 分析: 一本书信息由6个,想到用结构体来存. 至于每一个信息可以用string来存,而关键字在想使用vector<string> keywords还 ...

  2. 1022. Digital Library

    字符串处理能力有待提高 // 1022. Digital Library.cpp: 主项目文件.#include "stdafx.h" #include <cstdio> ...

  3. 1022. Digital Library (30) -map -字符串处理

    题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key w ...

  4. pat 甲级 1022 Digital Library 报错,格式错误等

    当你被1022题搞得恼羞成怒,反复检查代码准确无误,怀疑是输出格式问题时(你可能已经测试了两种不同格式) 那么我相信看到这篇文章的你编写的程序应该是准确的,只是PAT题目编写的随意程度再次令人乍舌. ...

  5. 1022 Digital Library (30 分) 【难度: 中 / 知识点: 哈希表】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336 解析: 将每一部分都用哈希表映射.映射的结果 ...

  6. 1022. Digital Library (30)

    考察倒排索引 #include<iostream> #include<string> #include<vector> #include<algorithm& ...

  7. 【PAT甲级 - C++题解】1022 Digital Library

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  8. PTA-1022——Digital Library

    题目: A Digital Library contains millions of books, stored according to their titles, authors, key wor ...

  9. ACM Digital Library访问及完整联动Zotero

    The ACM Digital Library(Association for Computing Machinery)创立于1947年,是全球历史最悠久和最大的计算机教育.科研机构.数据库收录了美国 ...

最新文章

  1. javacurrentmap_Java 8 并发: 原子变量和 ConcurrentMap
  2. 数据结构-挖坑填数+分治法解决快速排序问题(java+c)
  3. print python 如何加锁_深度解密Python单例模式
  4. 百练OJ:2965:玛雅历
  5. 使用JQuery实现延迟加载UserControl
  6. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用
  7. 为mysql数据库建立索引
  8. 维大杀器来了,未来云上服务器或将实现无人值守
  9. 关于动态生成div的认识
  10. 获取并编译linux源码,linux – 从源代码编译软件:如何收集依赖项列表?
  11. 录入成绩编程平均java_java 学习第二天小练习
  12. 高光谱提取薯叶特征波长
  13. 阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
  14. 计算机文件及文件夹管理实验报告,计算机实验报告
  15. 不擅长演讲?值得技术收藏的PPT演讲底层逻辑--大树模型
  16. 51学习记录基于51单片机的简单音乐盒
  17. itextpdf 给pdf文档添加图片
  18. 随记:STM32L053LL库LPUART串口DMA接收数据
  19. 已会背诵英文文章 How To Boost Your Confidence
  20. 蓄水池采样算法的python实现_常用算法-蓄水池抽样算法

热门文章

  1. 微信小程序 实现复制到剪贴版功能
  2. iOS12 UITabbar Item 向上漂移错位的bug
  3. Java SSH Hibernate通过代码实现从数据库中随机取出指定条数的随机数据
  4. 抓取网页的脚本 【修复】
  5. Linux下tcpdump用法
  6. wpa_supplicant学习
  7. 使用sourceInsight 提高代码编写效率
  8. 批处理解决“易语言难题”
  9. pap和chap交叉认证
  10. VC:CString用法整理(转载)