#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;
//利用map键的唯一性
//建立key为关键词,value为id的map map<string, vector<int>> name;
map<string, vector<int>> author;
map<string, vector<int>> keyWord;
map<string, vector<int>> press;
map<string, vector<int>> year;//对出版年同样做string对待 int main(void)
{
//ifstream fin("data.txt"); int num, bookID;
cin>>num;
string temp, nameTemp, authorTemp, keyWordLine,
keyWordTemp, pressTemp, yearTemp;
for(int i=; i<num; i++)
{
cin>>bookID;
getline(cin, temp);//这里多余的输入去掉回车符
getline(cin, nameTemp);
name[nameTemp].push_back(bookID);
//map下标操作:
//1.如果存在key,则返回对应的value
//2.如果key不存在,插入key getline(cin, authorTemp);
author[authorTemp].push_back(bookID); //输入一行字符串并且逐个分解单词
getline(cin, keyWordLine);
istringstream stream(keyWordLine);
while(stream >> keyWordTemp)
keyWord[keyWordTemp].push_back(bookID); getline(cin, pressTemp);
press[pressTemp].push_back(bookID); getline(cin, yearTemp);
year[yearTemp].push_back(bookID);
} int queryNum;
cin>>queryNum;
string query;
getline(cin, temp);//同样去掉整型后面的回车符 for(int i=; i<queryNum; i++)
{
getline(cin, query);
string queryText(query.begin()+, query.end());//拷贝关键词
map<string, vector<int>>::iterator it = name.find(queryText);
if(it != name.end())//关键词存在
{
cout<<query<<endl;
sort(it->second.begin(), it->second.end());//按id顺序
for(int j=; j<it->second.size(); j++)
cout<<setfill('')<<setw()<<it->second[j]<<endl;
continue;//按照题意,关键词是name keyword author等中的一种
//查询到则进行下一次查询
} it = author.find(queryText);
if(it != author.end())
{
cout<<query<<endl;
sort(it->second.begin(), it->second.end());
for(int j=; j<it->second.size(); j++)
cout<<setfill('')<<setw()<<it->second[j]<<endl;
continue;
} it = keyWord.find(queryText);
if(it != keyWord.end())
{
cout<<query<<endl;
sort(it->second.begin(), it->second.end());
for(int j=; j<it->second.size(); j++)
cout<<setfill('')<<setw()<<it->second[j]<<endl;
continue;
} it = press.find(queryText);
if(it != press.end())
{
cout<<query<<endl;
sort(it->second.begin(), it->second.end());
for(int j=; j<it->second.size(); j++)
cout<<setfill('')<<setw()<<it->second[j]<<endl;
continue;
} it = year.find(queryText);
if(it != year.end())
{
cout<<query<<endl;
sort(it->second.begin(), it->second.end());
for(int j=; j<it->second.size(); j++)
cout<<setfill('')<<setw()<<it->second[j]<<endl;
continue;
} //未找到
cout<<query<<endl<<"Not Found"<<endl;
} return ;
}

pat 1022 digital library的更多相关文章

  1. PAT 1022 Digital Library[map使用]

    1022 Digital Library (30)(30 分) A Digital Library contains millions of books, stored according to th ...

  2. pat 甲级 1022. Digital Library (30)

    1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...

  3. PAT 甲级 1022 Digital Library (30 分)(字符串读入getline,istringstream,测试点2时间坑点)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  4. 1022 Digital Library——PAT甲级真题

    1022 Digital Library A Digital Library contains millions of books, stored according to their titles, ...

  5. 1022 Digital Library (30 分)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  6. PAT 甲级 1022 Digital Library

    https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336 A Digital Library cont ...

  7. PAT Advanced 1022 Digital Library (30 分)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  8. 1022. Digital Library (30)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

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

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

随机推荐

  1. Django-- 多数据库联用

    django项目中使用多个数据库的方法, 多个数据库的联用 以及多数据库时数据导入导出的方法. 直接给出一种简单的方法吧,想了解更多的到官方教程,点击此处 给每个app都可以单独的设置一个数据库 se ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

  3. 循序渐进之Spring AOP(1) - 原理

    AOP全称是Aspect Oriented Programing,通常译为面向切面编程.利用AOP可以对面向对象编程做很好的补充. 用生活中的改装车比喻,工厂用面向对象的方法制造好汽车后,车主往往有些 ...

  4. [bzoj2843&&bzoj1180]极地旅行社 (lct)

    双倍经验双倍的幸福... 所以另一道是300大洋的世界T_T...虽然题目是一样的,不过2843数据范围小了一点... 都是lct基本操作 #include<cstdio> #includ ...

  5. 模板类-bitset

    stl提供了std::bitset模板类,定义:bitset <32> bitvec;尖括号中的为长度,这条语句把bitvec定义为含有32个的bitset对象.和容器一样,按位置来访问他 ...

  6. 【转自知乎】:localhost、127.0.0.1 和 本机IP 三者的区别?

    作者:知乎用户链接:https://www.zhihu.com/question/23940717/answer/26230963来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  7. Sass之混合宏、继承、占位符

    1.混合宏. 当样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无法达到我们目的了.这个时候混合宏就派上用场了. 而使用混合宏时,首先要声明混合宏,而声明混合宏时有两种,不带参数混合宏和带参数 ...

  8. 国寿e店/人寿云参会云助理,不去公司就能刷脸考勤打卡?

    自从2017年3月平安保险公司实行E行销打卡考勤以来,保险增员迅猛增加,保险业绩也随之水涨船高.年底开始中国人寿保险也陆续开始实行app考勤,有些需要连接公司指定WiFi,或在指定地点方可打卡考勤.不 ...

  9. Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决

    最近一个TP5的项目说放到Nginx下测试看看,下载个 PHPstudy,放到WWW下,配置好域名,直接给个报个404: 解决方法: 1.先在phpstudy下配置好域名目录指向项目下的public下 ...

  10. 使用vue框架运行npm run dev 时报错解决

    使用使用vue框架运行npm run dev 时报错 如下: 原因: localhost:8080 有可能其他软件占用了,导致其他问题的出现 我们可以动态修改地址 解决: 进入项目文件的config文 ...