[PAT解题报告] Digital Library
不是难题。其实就是按照name, title, publisher, key word和year建立倒排索引就行了。具体倒排索引可以用map<string, set<string> > 代替。key就是那5种类型,value是符合要求的书的集合。题目一点也不难,可以算做模拟题,就是问什么,从倒排索引里把要的东西拿出来输出就可以了。
注意事项: 别忘了输出query……

代码:
#include <cstdio>
#include <map>
#include <string>
#include <cstring>
#include <sstream>
#include <set>

using namespace std;

map<string, set<string> > title, author,word, publisher, year;

char s[1000];

void make(map<string,set<string> > &a, const char *s) {
map<string,set<string> >::iterator t = a.find(s);
    if ((t == a.end()) || (t->second.empty())) {
        puts("Not Found");
    }
    else {
        for (set<string>::iterator it = t->second.begin(); it != t->second.end(); ++it) {
            puts(it->c_str());
        }
    }
}

int main() {
int n;
    scanf("%d",&n);
    for (gets(s);n;--n) {
        gets(s);
        string id = s;
        gets(s);
        title[s].insert(id);
        gets(s);
        author[s].insert(id);
        gets(s);
        istringstream in(s);
        string temp;
        while (in >> temp) {
            word[temp].insert(id);
        }
        gets(s);
        publisher[s].insert(id);
        gets(s);
        year[s].insert(id);
    }
    scanf("%d",&n);
    for (gets(s);n;--n) {
        gets(s);
        puts(s);
        switch(s[0]) {
        case '1':
            make(title, s + 3);
            break;
        case '2':
            make(author, s + 3);
            break;
        case '3':
            make(word, s + 3);
            break;
        case '4':
            make(publisher, s + 3);
            break;
        case '5':
            make(year, s + 3);
            break;
        }
    }
    return 0;
}
原题链接: http://www.patest.cn/contests/pat-a-practise/1022

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-23 17:45
武汉商学院_2023
点赞 评论 收藏
转发
头像
2022-12-04 23:04
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议