zoukankan      html  css  js  c++  java
  • pat1022 Digital Library

    这道题麻烦是麻烦点,思路倒是还算简单。

    比较坑的就是最后要用07d%打印。

    还学到了一个挺重要的东西,就是如何读取一行输入中的连续字符串。

    while(cin>>str)
    
    {
    
      char c;
    
      c=getchar();
    
      if(c=='
    ')
    
        break;
    }
    

      

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 10005;
    map<string, set<int>>title;
    map<string, set<int>>author;
    map<string, set<int>>keyword;
    map<string, set<int>>publisher;
    map<string, set<int>>year;
    int n;
    bool cmp(int a, int b)
    {
    	return a > b;
    }
    typedef struct book
    {
    	int digit;
    	string title;
    	string author;
    	string keyword;
    	string publisher;
    	string year;
    }book;
    book books[maxn];
    int main()
    {
    	scanf("%d", &n);
    	int i;
    	for (i = 0; i < n; i++)
    	{
    		scanf("%d", &books[i].digit);
    		getchar();
    		getline(cin, books[i].title);
    		getline(cin, books[i].author);
    		string key;
    		while (cin >> key)
    		{
    			keyword[key].insert(books[i].digit);
    			char c = getchar();
    			if (c == '
    ')
    				break;
    		}
    		getline(cin, books[i].publisher);
    		getline(cin, books[i].year);
    		title[books[i].title].insert(books[i].digit);
    		author[books[i].author].insert(books[i].digit);
    		publisher[books[i].publisher].insert(books[i].digit);
    		year[books[i].year].insert(books[i].digit);
    	}
    	int n;
    	scanf("%d", &n);
    	for (i = 0; i < n; i++)
    	{
    		int query;
    		scanf("%d: ", &query);
    		string str;
    		getline(cin, str);
    		if (query == 1)
    		{
    			printf("%d: ", query);
    			cout << str << endl;
    			if (title[str].size() == 0)
    			{
    				printf("Not Found
    ");
    			}
    			else
    			{
    				set<int>::iterator it = title[str].begin();
    				for (; it != title[str].end(); it++)
    				{
    					printf("%07d
    ", *it);
    				}
    			}
    		}
    		else if (query == 2)
    		{
    			printf("%d: ", query);
    			cout << str << endl;
    			set<int>::iterator it = author[str].begin();
    			if (author[str].size() == 0)
    			{
    				printf("Not Found
    ");
    			}
    			else
    			{
    				for (; it != author[str].end(); it++)
    				{
    					printf("%07d
    ", *it);
    				}
    			}
    		}
    		else if (query == 3)
    		{
    			printf("%d: ", query);
    			cout << str << endl;
    			if (keyword[str].size() == 0)
    			{
    				printf("Not Found
    ");
    			}
    			else
    			{
    				set<int>::iterator it = keyword[str].begin();
    				for (; it != keyword[str].end(); it++)
    				{
    					printf("%07d
    ", *it);
    				}
    			}
    			
    		}
    		else if (query == 4)
    		{
    			printf("%d: ", query);
    			cout << str << endl;
    			set<int>::iterator it = publisher[str].begin();
    			if (publisher[str].size() == 0)
    			{
    				printf("Not Found
    ");
    			}
    			else
    			{
    				for (; it != publisher[str].end(); it++)
    				{
    					printf("%07d
    ", *it);
    				}
    			}
    		}
    		else if (query == 5)
    		{
    			printf("%d: ", query);
    			cout << str << endl;
    			set<int>::iterator it = year[str].begin();
    			if (year[str].size() == 0)
    			{
    				printf("Not Found
    ");
    			}
    			else
    			{
    				for (; it != year[str].end(); it++)
    				{
    					printf("%07d
    ", *it);
    				}
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    database使用
    画图工具
    宝塔面板权限不足问题解决
    nginx查看并发数量
    台式机未插入扬声器或者耳机
    键盘出现乱码解决
    lnmp宝塔面板问题
    nginx+mysql双主搭建
    zabbix客户端安装
    java生产条形码
  • 原文地址:https://www.cnblogs.com/legendcong/p/9636288.html
Copyright © 2011-2022 走看看