题解 P1184 【高手之在一起】

· · 题解

首先,90分的人,和你们说一个这道题的BUG坑——最后一个字符串上不加换行符就是 char(13) 但前面所有都会加恶心极了

那么你非常开心,因为你觉得自己找到应对的方法了——把给它加回去

你兴高采烈地提交了代码,悲伤地发现,除了第一个测试点,其他最后都有换行

所以说你用if不就好了?

if(st[st.size()-1]!=13)
{
    st=st+char(13);
}

那么要做这题,先一个叫map的

map和数组的用法是一样的,定义是map<下表类型,存放的类型>名称;

所以会有a["absd"]是十分正常的

那么这题就迎刃而解鸟

#include <bits/stdc++.h>
using namespace std;
#define qwq return 0;
#define QAQ int main()
map<string,bool>a;//map出现惹(这是以i字符串为下标的bool类型数组a
int m,n,s;
string st;
QAQ
{
    cin>>n>>m;
    getline(cin,st);//吃掉换行
    for(int i=0;i<n;i++)
    {
        getline(cin,st);
        a[st]=1;
    }
    for(int i=1;i<m;i++)
    {
        getline(cin,st);
        s+=a[st];
    }
    getline(cin,st);
    if(st[st.size()-1]!=13)//加上换行符
    {
        st=st+char(13);
    }
    s+=a[st];
    cout<<s;
    qwq
}