码迷,mamicode.com
首页 > 其他好文 > 详细

pat 1022 digital library

时间:2014-08-11 20:25:32      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   ar   art   

  1 #include <iostream>
  2 #include <sstream>
  3 #include <string>
  4 #include <vector>
  5 #include <map>
  6 #include <fstream>
  7 #include <algorithm>
  8 #include <iomanip>
  9 using namespace std;
 10 //利用map键的唯一性
 11 //建立key为关键词,value为id的map
 12 
 13 map<string, vector<int>> name;
 14 map<string, vector<int>> author;
 15 map<string, vector<int>> keyWord;
 16 map<string, vector<int>> press;
 17 map<string, vector<int>> year;//对出版年同样做string对待
 18 
 19 int main(void)
 20 {
 21     //ifstream fin("data.txt");
 22 
 23     int num, bookID;
 24     cin>>num;
 25     string temp, nameTemp, authorTemp, keyWordLine,
 26         keyWordTemp, pressTemp, yearTemp;
 27     for(int i=0; i<num; i++)
 28     {
 29         cin>>bookID;
 30         getline(cin, temp);//这里多余的输入去掉回车符
 31         getline(cin, nameTemp);
 32         name[nameTemp].push_back(bookID);
 33         //map下标操作:
 34         //1.如果存在key,则返回对应的value
 35         //2.如果key不存在,插入key
 36 
 37         getline(cin, authorTemp);
 38         author[authorTemp].push_back(bookID);
 39 
 40         //输入一行字符串并且逐个分解单词
 41         getline(cin, keyWordLine);
 42         istringstream stream(keyWordLine);
 43         while(stream >> keyWordTemp)
 44             keyWord[keyWordTemp].push_back(bookID);
 45 
 46         getline(cin, pressTemp);
 47         press[pressTemp].push_back(bookID);
 48 
 49         getline(cin, yearTemp);
 50         year[yearTemp].push_back(bookID);
 51     }
 52     
 53     int queryNum;
 54     cin>>queryNum;
 55     string query;
 56     getline(cin, temp);//同样去掉整型后面的回车符
 57 
 58     for(int i=0; i<queryNum; i++)
 59     {
 60         getline(cin, query);
 61         string queryText(query.begin()+3, query.end());//拷贝关键词
 62         map<string, vector<int>>::iterator it = name.find(queryText);
 63         if(it != name.end())//关键词存在
 64         {
 65             cout<<query<<endl;
 66             sort(it->second.begin(), it->second.end());//按id顺序
 67             for(int j=0; j<it->second.size(); j++)
 68                 cout<<setfill(0)<<setw(7)<<it->second[j]<<endl;
 69             continue;//按照题意,关键词是name keyword author等中的一种
 70                     //查询到则进行下一次查询
 71         }
 72 
 73         it = author.find(queryText);
 74         if(it != author.end())
 75         {
 76             cout<<query<<endl;
 77             sort(it->second.begin(), it->second.end());
 78             for(int j=0; j<it->second.size(); j++)
 79                 cout<<setfill(0)<<setw(7)<<it->second[j]<<endl;
 80             continue;
 81         }
 82 
 83         it = keyWord.find(queryText);
 84         if(it != keyWord.end())
 85         {
 86             cout<<query<<endl;
 87             sort(it->second.begin(), it->second.end());
 88             for(int j=0; j<it->second.size(); j++)
 89                 cout<<setfill(0)<<setw(7)<<it->second[j]<<endl;
 90             continue;
 91         }
 92 
 93         it = press.find(queryText);
 94         if(it != press.end())
 95         {
 96             cout<<query<<endl;
 97             sort(it->second.begin(), it->second.end());
 98             for(int j=0; j<it->second.size(); j++)
 99                 cout<<setfill(0)<<setw(7)<<it->second[j]<<endl;
100             continue;
101         }
102 
103         it = year.find(queryText);
104         if(it != year.end())
105         {
106             cout<<query<<endl;
107             sort(it->second.begin(), it->second.end());
108             for(int j=0; j<it->second.size(); j++)
109                 cout<<setfill(0)<<setw(7)<<it->second[j]<<endl;
110             continue;
111         }
112 
113         //未找到
114         cout<<query<<endl<<"Not Found"<<endl;
115     }
116 
117     return 0;
118 }

 

pat 1022 digital library,布布扣,bubuko.com

pat 1022 digital library

标签:style   blog   color   os   io   for   ar   art   

原文地址:http://www.cnblogs.com/luojiahu/p/3905142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!