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);
    				}
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    mysql in like GROUP_CONCAT
    StringBuilder的常用方法
    mysql 中unionall 使用
    mysql中,数据库字段为时间戳转时间的处理方法
    一个数组储存多个对象
    Java中的substring()用法
    java思想篇1
    任务调配管理
    字符窜数组去重及各种常规用法
    自定义属性的设值
  • 原文地址:https://www.cnblogs.com/legendcong/p/9636288.html
Copyright © 2011-2022 走看看