两个坑。

一个是一直用的malloc不行了。因为malloc分配的是固定大小,之前做的题没遇到过是因为一般string都不长(malloc分配string为24个Byte),这次直接报段错误,呢们了半天。

第二个很无语,就是ID会有0,当int处理的时候把0消掉了,会有两个case不通过。

#include <iostream>
#include <vector>
#include <sstream>
#include <stdio.h>
#include <map>
#include <algorithm>
using namespace std;
struct Book{
string id;
string title;
string author;
vector<string> keyWords;
string publish;
int year;
};
int n,m;
string tmp;
string line;
vector<Book> bookSet;
map<string,vector<int> > mmT;
map<string,vector<int> > mmA;
map<string,vector<int> > mmK;
map<string,vector<int> > mmP;
map<int,vector<int> > mmY;
bool cmp(int a,int b){
return bookSet[a].id<bookSet[b].id;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
Book b;
cin>>b.id;
getline(cin,line);//cin没有读取回车
getline(cin,line);b.title=line;mmT[b.title].push_back(i);
getline(cin,line);b.author=line;mmA[b.author].push_back(i);
getline(cin,line);
stringstream ss(line);
while(ss>>tmp){
b.keyWords.push_back(tmp);
mmK[tmp].push_back(i);
}
getline(cin,line);b.publish=line;mmP[b.publish].push_back(i);
cin>>b.year;mmY[b.year].push_back(i);
bookSet.push_back(b);
}
int queN;
cin>>m;
for(int i=0;i<m;i++)
{
scanf("%d: ",&queN);
getline(cin,tmp);
int yea;
vector<int> logN;
switch(queN){
case 1:logN=mmT[tmp];break;
case 2:logN=mmA[tmp];break;
case 3:logN=mmK[tmp];break;
case 4:logN=mmP[tmp];break;
case 5:yea=stoi(tmp);logN=mmY[yea];break;
default:break;
}
printf("%d: ",queN);cout<<tmp<<endl;
sort(logN.begin(),logN.end(),cmp);
vector<int>::iterator ii=logN.begin();
while(ii!=logN.end()){
cout<<bookSet[(*ii)].id<<endl;
ii++;
}
if(logN.size()==0){
cout<<"Not Found"<<endl;
} } }

PAT1022. Digital Library (30)的更多相关文章

  1. PAT-1022 Digital Library (30 分) 字符串处理

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

  2. PAT1022.:Digital Library

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

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

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

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

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

  5. 1022 Digital Library (30 分)

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

  6. 1022. Digital Library (30)

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

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

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

  8. 1022 Digital Library (30)(30 point(s))

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

  9. 1022 Digital Library (30)(30 分)

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

随机推荐

  1. Android开发:《Gradle Recipes for Android》阅读笔记1.2

    在android开发中会需要配置使用app的android SDK的最低版本和目标版本,这个是bulidl.gradle的android模块设置.默认有以下几个设置: applicationId,这个 ...

  2. 【BZOJ1977】[BeiJing2010组队]次小生成树 Tree 最小生成树+倍增

    [BZOJ1977][BeiJing2010组队]次小生成树 Tree Description 小 C 最近学了很多最小生成树的算法,Prim 算法.Kurskal 算法.消圈算法等等. 正当小 C ...

  3. 《从零开始学Swift》学习笔记(Day 41)——类的继承

    原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的继承只能发生在类上,不能发生在枚举和结构体上.一个类可以继承另一个类的方法.属性.下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫 ...

  4. 1282 时钟(最小表示法+hash)

    1282 时钟 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N个时钟,每个时钟有M个指针,P个刻度.时钟是圆形的,P个刻度均分整 ...

  5. 单片机教程4.C语言基础以及流水灯的实现

    单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式 ...

  6. coursera 《现代操作系统》 -- 第十周 文件系统(2)

    身份验证 Authentication 知道用户是谁.通过账号密码.Id 这样的识别出来. 访问控制 Permission 知道用户是谁后. 主动控制 记录用户ID和对应的访问权限 --> 记录 ...

  7. PHP与ASP转义双引号的区别

    PHP: 转义双引号:\" ASP: 转义双引号:"" PHP与ASP转义双引号的区别

  8. Vue表格中时间的处理

    Vue中表格的数据应该来自后台数据库,然后从数据库中读取到的数据,时间格式可能有些不同,我们可以根据实际需要来对这个时间进行转化. 这里介绍一个js库,它提供了强大的日期处理功能,功能强大且只有2k大 ...

  9. Hard模式学编程

    靖难: 我一直推崇一种学习编程的方法,就是learn programming the hard way,我把它翻译为Hard模式学编程 . 我觉得他有以下几个要领: 1. 一开始学习的时候,要尽量去化 ...

  10. Pycharm中SQL语句提示SQL Dialect is Not Configured

    解决办法: 在File---->Setting--->Languages & Frameworks--->SQL Dialects中,选择对应的数据库,如MySQL,之后点击 ...