1022. Digital Library (30) @ PAT (Advanced Level) Practise

20 篇文章 0 订阅


考察倒排索引

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
#include<sstream>
using namespace std;

int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		//build map
		map<string,std::vector<string>> queryMap[5];
		while(n--)
		{
			getchar();
			string id, title, author, wordList, publisher, year;
			getline(cin, id);
			getline(cin, title); getline(cin, author);
			getline(cin, wordList); 
			getline(cin, publisher); cin>>year;
			queryMap[0][title].push_back(id); queryMap[1][author].push_back(id);
			queryMap[3][publisher].push_back(id); queryMap[4][year].push_back(id);
			istringstream istr(wordList);
			while(!istr.eof())
			{
				string word;
				istr>>word;
				queryMap[2][word].push_back(id);
			}
		}
		//sort first
		for(int i = 0; i < 5; ++i)
		{
			map<string,std::vector<string>>::iterator it;
			for(it=queryMap[i].begin(); it!=queryMap[i].end(); it++)
				sort(it->second.begin(), it->second.end());
		}
		//query
		int m;
		scanf("%d",&m);
		while(m--)
		{
			int index; string q;
			scanf("%d: ", &index);
			getline(cin, q);
			printf("%d: ", index);
			cout<<q<<endl;
			index--;
			map<string,std::vector<string>>::iterator it;
			it = queryMap[index].find(q);
			if(it!=queryMap[index].end())
			{
				std::vector<string> result = queryMap[index][q];
				for(int i = 0; i < result.size(); ++i)
					cout<<result[i]<<endl;
			}
			else printf("Not Found\n");
			
		}
	}
	return 0;
}


from:

http://blog.csdn.net/sunbaigui/article/details/8657103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值