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