• A1022 Digital Library (30分)


    一、技术总结

    1. 首先这是一个map,STL类型的题目,前面的一个问题是存储,首先可能会想到的是,把每个信息存储下来然后通过输入想要查询的方式进行查询。可是,如果这里会发现,是通过关键词然后查询输出,相关book的id号。这个样其实就可以使用map,把相关的关键词作为一个string,然后id使用一个set容器进行存储。
    2. 所以存储的形式就是map<string, set >
    3. 还有一点需要注意的是,查询函数query(),参数注意要使用引用,不然会有超时。
    4. 还有就是在输入一行中的单个字符串的时候,包括空格,应该怎么处理:
    while(cin >> str){
        tkey[str].insert(id);
        char c = getchar();
        if(c == '
    ') break;
    }
    

    二、参考代码

    #include<iostream>
    #include<map>
    #include<string>
    #include<set>
    using namespace std;
    map<string, set<int> > ttitle, tkey, tauthor, tpub, tyear;
    void query(map<string, set<int> > &m, string &str){
    	if(m.find(str) != m.end()){
    		for(auto it = m[str].begin(); it != m[str].end(); it++){
    			printf("%07d
    ", *it);
    		}
    	}else{
    		printf("Not Found
    ");
    	}
    }
    int main(){
    	int n, m, id, num;
    	scanf("%d", &n);
    	string title, key, author, pub, year;
    	for(int i = 0; i < n; i++){
    		scanf("%d
    ", &id);
    		getline(cin, title);
    		ttitle[title].insert(id);
    		getline(cin, author);
    		tauthor[author].insert(id);
    		while(cin >> key){
    			tkey[key].insert(id);
    			char c = getchar();
    			if(c == '
    ') break; 
    		}
    		getline(cin, pub);
    		tpub[pub].insert(id);
    		getline(cin, year);
    		tyear[year].insert(id);
    	}
    	scanf("%d", &m);
    	for(int i = 0; i < m; i++){
    		scanf("%d: ", &num);
    		string temp;
    		getline(cin, temp);
    		cout << num << ": " << temp << "
    ";
    		if(num == 1) query(ttitle, temp);
    		else if(num == 2) query(tauthor, temp);
    		else if(num == 3) query(tkey, temp);
    		else if(num == 4) query(tpub, temp);
    		else if(num == 5) query(tyear, temp);
    	}
    	return 0;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Linux 安全工具之extundelete误删除恢复
    Linux安全工具之fail2ban防爆力破解
    构建高效安全的Nginx Web服务器
    必读说明
    U盘因格式化 NTFS 中断造成无法识别,生产平台同样无法识别的修复处理方案
    计算机等级考试【二级C语言程序设计】知识点整理
    MD 使用 i5ting_toc 转换成 HTML
    Windows10 图标变白修复
    【已解决】老型号电脑需要按F1键才能进入系统
    【已解决】什么是心跳包?
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12245456.html
Copyright © 2020-2023  润新知