【t051】图书管理

Time Limit: 1 second
Memory Limit: 128 MB

【问题描述】

图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入。为了更方便的管理图书(以便于帮助想要借书的客人
快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统。
该系统需要支持2种操作
1:add(s) 表示新加入一本书名为s的图书。
2:find(s) 表示查询是否存在一本书名为s的图书。

【输入格式】

第一行包括一个正整数n(n<=10000),表示操作数。
以下n行,每行给出2种操作中的某一个指令条,指令格式为:
add s
find s
在书名s与指令(add,find)之间有一个隔开,我们保证所有书名的长度都不超过200。可以假设读入数据是准确无误的。

【输出格式】

对于每个find(s)指令,我们必须对应的输出一行yes或no,表示当前所查询的书是否存在于图书馆内。注意:一开始时图书馆内是没
有一本图书的。并且,对于相同字母不同大小写的书名,我们认为它们是不同的。

Sample Input

4
add Inside C#
find Effective Java
add Effective Java
find Effective Java


Sample Output

no
yes
【题解】
用map容器来处理.
即 map <string,int> xx;
即用string类映射一个int类。
xx.count(element)这个东西可以快速查看elemet这个元素是否在xx中。
【代码】
#include <cstdio>
#include <map>
#include <string>

using namespace std; 

int n,bianhao = 0;

char *temp;
char *name;
map <string,int> dic;

int main()
{
	
	scanf("%d",&n); //输入n个信息 
	getchar();
	for (int i = 1;i <= n;i++)
		{
			temp = new char[10];	//用scanf来输入字符串会更快吧。 
			scanf("%s",temp);  
			name = new char[1000];
			scanf("%s",name);
			string tt = string(name); //然后把书名转成string类。以用来访问这个书名的位置 
			if (temp[0] == 'a')
				dic[tt] = ++bianhao; //如果是add的话就把他加入到dic中,并且给它一个编号 
					else
						{
							if (dic.count(tt) == 1) //否则就用map.count(xx),来判断xx是否在map中 
								printf("yes
");
									else
										printf("no
");
						}
					
		}
	return 0;	
}


原文地址:https://www.cnblogs.com/AWCXV/p/7632353.html