`
linest
  • 浏览: 150252 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

pat-1022 Digital Library

    博客分类:
  • pat
阅读更多
可能的查询 ID值进行map映射  

以下代码有问题,原因是ID是整形保存,会忽略前面的0
#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<map>
#include<set>
#include<algorithm>



int main()
{
	int N;
	map<string,set<int>> m;
	int ID;
	int index;
	string title;
	string author;
	string keyword;
	string publisher;
	string year;
	int M;
	string query;

	cin>>N;

	while(N--)
	{
		cin>>ID;
		getchar();
		getline(cin,title);
		getline(cin,author);
		getline(cin,keyword);
		index=1;
		while(index!=string::npos)
		{
			index = keyword.find(" ");
			m["3: "+keyword.substr(0,index)].insert(ID);
			//cout<<keyword.substr(0,index)<<endl;
			keyword = keyword.substr(index+1);
		}
		getline(cin,publisher);
		getline(cin,year);
		m["1: "+title].insert(ID);
		m["2: "+author].insert(ID);
		m["4: "+publisher].insert(ID);
		m["5: "+year].insert(ID);

	}

	cin>>M;
	getchar();
	while(M--)
	{
		getline(cin,query);
		cout<<query<<endl;
		if(m.find(query)!=m.end())
		{
			for(set<int>::iterator si= m[query].begin(); si != m[query].end();si++)
				cout<<*si<<endl;
		}
		else
		{
			cout<<"Not Found"<<endl;
		}
	}
}







改为字符串保存ID
#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<map>
#include<set>
#include<algorithm>



int main()
{
	int N;
	map<string,set<string>> m;
	string ID;
	int index;
	string title;
	string author;
	string keyword;
	string publisher;
	string year;
	int M;
	string query;

	cin>>N;
	getchar();

	while(N--)
	{
		getline(cin,ID);
		getline(cin,title);
		getline(cin,author);
		getline(cin,keyword);
		index=1;
		while(index!=string::npos)
		{
			index = keyword.find(" ");
			m["3: "+keyword.substr(0,index)].insert(ID);
			//cout<<keyword.substr(0,index)<<endl;
			keyword = keyword.substr(index+1);
		}
		getline(cin,publisher);
		getline(cin,year);
		m["1: "+title].insert(ID);
		m["2: "+author].insert(ID);
		m["4: "+publisher].insert(ID);
		m["5: "+year].insert(ID);

	}

	cin>>M;
	getchar();
	while(M--)
	{
		getline(cin,query);
		cout<<query<<endl;
		if(m.find(query)!=m.end())
		{
			for(set<string>::iterator si= m[query].begin(); si != m[query].end();si++)
				cout<<*si<<endl;
		}
		else
		{
			cout<<"Not Found"<<endl;
		}
	}
}

分享到:
评论
2 楼 linest 2012-03-21  
ethi_teye 写道
id可能是0开头的,你用int保存再输出,这些0就被忽略了。

疏忽了 thx
1 楼 ethi_teye 2012-03-18  
id可能是0开头的,你用int保存再输出,这些0就被忽略了。

相关推荐

Global site tag (gtag.js) - Google Analytics