欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PAT 甲级 1022 Digital Library

程序员文章站 2024-02-17 12:29:34
...
#include <iostream>
#include <map>
#include <set>
#include <string>

using namespace std;

int main()
{
	// 读入书本数量
	int N; cin >> N; cin.get();
	// 用map存储查询信息到书本ID所在集合set的映射关系
	// 集合set会自动按递增方式将ID进行排序
	map<string, set<string> > Library;
	// 读入书本信息
	string id, line; // ID应该用字符串
	while(N--)
	{
		getline(cin, id); // 读取ID
		getline(cin, line); // 读取书名
		Library[line].insert(id);
		getline(cin, line); // 读取作者名
		Library[line].insert(id); 
		// 读取关键字
		while(1)
		{	
			cin >> line;
			Library[line].insert(id);
			if(cin.get() == '\n')
				break;
		}
		getline(cin, line); // 读取出版社
		Library[line].insert(id); 
		getline(cin, line); // 读取出版年份
		Library[line].insert(id); 
	}
	// 打印查询信息
	int M; cin >> M;
	while(M--)
	{
		cin >> line; cout << line << " "; cin.get();
		getline(cin, line); cout << line << endl;
		if(Library[line].size() == 0)
			cout << "Not Found" << endl;
		else
			for(set<string>::iterator it = Library[line].begin(); it != Library[line].end(); it++)
				cout << *it << endl;
	}
}