题解 P1184 【高手之在一起】
好!机会来了!
依评论区的要求,小金羊献上STLset<string>
的题解。
当然不会告诉你map<string,bool>
我根本不会用
所以,有什么内置的成员函数救救孩子???
还是先复习 or 预习一下set。
先给集合一个名字:
set<元素类型>qwq;
插入元素:
qwq.insert(元素);
查找元素:
qwq.find(元素);
如果元素
没有找到,返回qwq.end()
,是一个空的位置迭代器。
于是得出:
如何判断元素p是否存在于qwq中?
if (qwq.find(p)!=qwq.end())
{
cout<<"Exist."<<endl;
}
else cout<<"Not found."<<endl;
以上是这个题的数据结构STL内置成员函数方面。
然后讨论一下这个题的操作。
这个题很明显卡的就是Windows Vista\XP\2003\7\8.1\10
!!!
因为题目测试点下载以后会发现多了一个13号字符' '
(空格)......
然后我们读入数据就必须特判char(13)
。
然后每一个地方还不一定不含有空格,所以必须getline
。
边读入要匹配的字符串,然后判断是否存在,存在即ans++
。
说的还是挺明白的吧......
星,上代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <set>
using namespace std;
int main()
{
string input;
set<string>qwq;
int n,m,ans=0;
scanf("%d%d",&n,&m);
getline(cin,input);
for (register int i=1;i<=n;i++)
{
getline(cin,input);
if (input[input.size()-1]!=(char)13)
input=input+char(13);
qwq.insert(input);
}
for (register int i=1;i<=m;i++)
{
getline(cin,input);
if (input[input.size()-1]!=(char)13)
input=input+char(13);
if (qwq.find(input)!=qwq.end())ans++;
}
cout<<ans;
return 0;
}
瞎举报前提交记录自己查询:Jelly_Goat
。
感谢阅读!