- 3
- 1111111
- The Testing Book
- Yue Chen
- test code debug sort keywords
- ZUCS Print
- 2011
- 3333333
- Another Testing Book
- Yue Chen
- test code sort keywords
- ZUCS Print2
- 2012
- 2222222
- The Testing Book
- CYLL
- keywords debug book
- ZUCS Print2
- 2011
- 6
- 1: The Testing Book
- 2: Yue Chen
- 3: keywords
- 4: ZUCS Print
- 5: 2011
- 3: blablabla
- 1: The Testing Book
- 1111111
- 2222222
- 2: Yue Chen
- 1111111
- 3333333
- 3: keywords
- 1111111
- 2222222
- 3333333
- 4: ZUCS Print
- 1111111
- 5: 2011
- 1111111
- 2222222
- 3: blablabla
- Not Found
题目大意
模拟数字图书馆的查询功能。给出N本书的信息,以及M个需要查询的命令,command为 相应的搜索方式,command后面跟着的字符串是搜索的关键词,要求输出满⾜指定搜索书的 id。如果查询结果为NULL,输出Not Found。
思路
map模拟即可
- #include
- using namespace std;
- map
> title,author,keys,publish,year; - void OP(map
>& op,const string& key) ; - int main()
- {
- string id,s,key;
- char ch;
- int N,command;
- cin >> N;
- getchar();
- while (N--){
- getline(cin,id);
- getline(cin,s);
- title[s].insert(id);
- getline(cin,s);
- author[s].insert(id);
- key = "";
- ch = getchar();
- while (ch!='\n'){
- if(ch==' '){
- keys[key].insert(id);
- key = "";
- }else key += ch;
- ch = getchar();
- }
- keys[key].insert(id);
- getline(cin,s);
- publish[s].insert(id);
- getline(cin,s);
- year[s].insert(id);
- }
- cin >> N;
- while (N--){
- scanf("%d: ",&command);
- getline(cin,id);
- printf("%d: %s\n",command,id.c_str());
- switch (command) {
- case 1:OP(title,id); break;
- case 2:OP(author,id);break;
- case 3:OP(keys,id);break;
- case 4:OP(publish,id);break;
- case 5:OP(year,id);break;
- }
- }
- return 0;
- }
- void OP(map
>& op,const string& key) - {
- if(op.find(key)!=op.end()){
- for(const string& x:op[key]) cout << x << endl;
- }
- else puts("Not Found");
- }
