1022 Digital Library
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相关推荐
- PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询
文章目录 题目分析 题目链接 题目分析 分析: 一本书信息由6个,想到用结构体来存. 至于每一个信息可以用string来存,而关键字在想使用vector<string> keywords还 ...
- 1022. Digital Library
字符串处理能力有待提高 // 1022. Digital Library.cpp: 主项目文件.#include "stdafx.h" #include <cstdio> ...
- 1022. Digital Library (30) -map -字符串处理
题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key w ...
- pat 甲级 1022 Digital Library 报错,格式错误等
当你被1022题搞得恼羞成怒,反复检查代码准确无误,怀疑是输出格式问题时(你可能已经测试了两种不同格式) 那么我相信看到这篇文章的你编写的程序应该是准确的,只是PAT题目编写的随意程度再次令人乍舌. ...
- 1022 Digital Library (30 分) 【难度: 中 / 知识点: 哈希表】
https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336 解析: 将每一部分都用哈希表映射.映射的结果 ...
- 1022. Digital Library (30)
考察倒排索引 #include<iostream> #include<string> #include<vector> #include<algorithm& ...
- 【PAT甲级 - C++题解】1022 Digital Library
✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
- PTA-1022——Digital Library
题目: A Digital Library contains millions of books, stored according to their titles, authors, key wor ...
- ACM Digital Library访问及完整联动Zotero
The ACM Digital Library(Association for Computing Machinery)创立于1947年,是全球历史最悠久和最大的计算机教育.科研机构.数据库收录了美国 ...
最新文章
- javacurrentmap_Java 8 并发: 原子变量和 ConcurrentMap
- 数据结构-挖坑填数+分治法解决快速排序问题(java+c)
- print python 如何加锁_深度解密Python单例模式
- 百练OJ:2965:玛雅历
- 使用JQuery实现延迟加载UserControl
- SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用
- 为mysql数据库建立索引
- 维大杀器来了,未来云上服务器或将实现无人值守
- 关于动态生成div的认识
- 获取并编译linux源码,linux – 从源代码编译软件:如何收集依赖项列表?
- 录入成绩编程平均java_java 学习第二天小练习
- 高光谱提取薯叶特征波长
- 阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
- 计算机文件及文件夹管理实验报告,计算机实验报告
- 不擅长演讲?值得技术收藏的PPT演讲底层逻辑--大树模型
- 51学习记录基于51单片机的简单音乐盒
- itextpdf 给pdf文档添加图片
- 随记:STM32L053LL库LPUART串口DMA接收数据
- 已会背诵英文文章 How To Boost Your Confidence
- 蓄水池采样算法的python实现_常用算法-蓄水池抽样算法