STL_A1022 Digital Library (30 分)

https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336

/*
*string,map,set的使用
*map<string,set<int> >
*把字符串string映射到元素均为int且有序的集合set
*/
#include<iostream>
using namespace std;
#include<cstdio>
#include<string>
#include<map>
#include<set>
set<int>::iterator it;
map<string,set<int> >mpTitle,mpAuthor,mpKey,mpPub,mpYear;

void query(map<string,set<int> >& mp,string& str) {
    if(mp.find(str)==mp.end()) printf("Not Found\n"); //注意换行,细节失败!
    else {
        for(it=mp[str].begin();it != mp[str].end();it++) {
            printf("%07d\n",*it); //输出str所对应的全部id
        }
    }
}
int main() {
    int n,m,id,type;
    string title,anthor,key,pub,year;
    scanf("%d",&n);
    for(int i=0;i<n;i++) {
        scanf("%d",&id);
        char c;
        c=getchar();
        getline(cin,title);
        mpTitle[title].insert(id); //把id加入title对应的集合
        getline(cin,anthor);
        mpAuthor[anthor].insert(id);

        while(cin>>key) { //每次读入单个关键词key
            mpKey[key].insert(id);
            c=getchar(); //接收关键词key之后的字符
            if(c==‘\n‘) break; //遇到换行,直接跳出
        }

        getline(cin,pub);
        mpPub[pub].insert(id);
        getline(cin,year);
        mpYear[year].insert(id);
    }
    string temp;
    scanf("%d",&m); //查询次数
    for(int i=0;i<m;i++) {
        scanf("%d: ",&type); //注意输入格式
        getline(cin,temp);
        cout<<type<<": "<<temp<<endl;

        if(type==1) query(mpTitle,temp);
        else if(type==2) query(mpAuthor,temp);
        else if(type==3) query(mpKey,temp);
        else if(type==4) query(mpPub,temp);
        else query(mpYear,temp);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/2o2o/p/11369862.html

时间: 2024-08-30 15:54:21

STL_A1022 Digital Library (30 分)的相关文章

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

A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are s

PAT Advanced 1022 Digital Library (30分)

A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are s

A1022 Digital Library (30分)

一.技术总结 首先这是一个map,STL类型的题目,前面的一个问题是存储,首先可能会想到的是,把每个信息存储下来然后通过输入想要查询的方式进行查询.可是,如果这里会发现,是通过关键词然后查询输出,相关book的id号.这个样其实就可以使用map,把相关的关键词作为一个string,然后id使用一个set容器进行存储. 所以存储的形式就是map<string, set > 还有一点需要注意的是,查询函数query(),参数注意要使用引用,不然会有超时. 还有就是在输入一行中的单个字符串的时候,包

pat1022. Digital Library (30)

1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Ea

A1022. Digital Library (30)

A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are s

1022. Digital Library (30)

A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are s

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

题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you

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

problem A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, y

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>> mpT