• A1022 Digital Library [map]


    在这里插入图片描述
    思路:根据书本信息查出所有的与之相关的书本编号,用map<string,set> 存 开五个容器存不同信息 根据不同的查询种类 利用关键字查询。
    注意事项:
    参数传引用比传值更快

    #include<vector>
    #include<iostream>
    #include<algorithm>
    #include<unordered_map>
    #include<set>
    #include<map>
    #include<cstring>
    #include<string>
    using namespace std;
    map<string, set<int> >title, author, key, pub, year;
    void query(map<string, set<int>>&mp, string& str)
    {
    	if (mp.find(str) == mp.end())
    		printf("Not Found
    ");
    	else
    	{
    		for(set<int>::iterator it=mp[str].begin();it!=mp[str].end();it++)
                printf("%07d
    ",*it);
    	}
    }
    int main()
    {
    	int n, m, id, type;
    	string ctitle, cauthor, ckey, cpub, cyear;
    	scanf("%d", &n);
    	for (int i = 0; i < n; i++)
    	{
    		scanf("%d", &id);
    		char c = getchar();
    		getline(cin, ctitle);
    		title[ctitle].insert(id);
    		getline(cin, cauthor);
    		author[cauthor].insert(id);
    		while (cin >> ckey)
    		{
    			key[ckey].insert(id);
    			c = getchar();
    			if (c == '
    ') break;
    		}
    		getline(cin, cpub);
    		pub[cpub].insert(id);
    		getline(cin, cyear);
    		year[cyear].insert(id);
    	}
    	string temp;
    	scanf("%d", &m);
    	for (int i = 0; i < m; i++)
    	{
    		scanf("%d: ", &type);
    		getline(cin, temp);
    		cout << type << ": " << temp << endl;
    		if (type == 1) query(title, temp);
    		else if (type == 2) query(author, temp);
    		else if (type == 3) query(key, temp);
    		else if (type == 4) query(pub, temp);
    		else query(year, temp);
    	}
    	return 0;
    }
    
  • 相关阅读:
    战旗游戏系统分析
    战棋游戏的战术性
    利用JSFL制作swf素材包
    深刻理解Java编程的7个例子
    ORACLE SQL:经典查询练手第二篇
    删除U盘时提示无法停止“通用卷”设备
    ORACLE SQL:经典查询练手第四篇
    IE8中打不开oracle EBS画面 FRM92050
    ORACLE SQL:经典查询练手第三篇
    ORACLE SQL:经典查询练手第一篇
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812031.html
Copyright © 2020-2023  润新知