说多了都是泪,因为重复定名,改了一个小时~
题目背景
一封好的情书需要撰写人全身心的投入。CYY同学看上了可爱的c**想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他。
题目描述
为了帮助lin_toto,我们定义一个量化情书好坏的标准感动值。判断感动值的方法如下:
1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每一单词在同一句话中出现多次感动值不叠加,不同单词不受影响。保证输入的单词不重复。
2.每句话以英文句号定界。
3.全文不区分大小写。
输入输出格式
输入格式:
第一行包含一个数字n,表示导致感动值提升的词汇列表中单词的数量,随后n行是给定单词,每行一个。保证单词只包含英文字母。
最后一行为情书正文,保证只包含以下几种字符: 英文字母、数字、空格、英文逗号、英文句号。
输出格式:
一个数字g,表示情书带来的感动值。
输入输出样例
输入样例#1: 复制
3
love
so
much
I love you so much.
输出样例#1: 复制
3
说明
对于所有的数据,保证1 ≤ n,m,k ≤ 100,每个单词不超过50字符,全文不超过1000字符。
没什么说的,map容器超神
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
int l,n,flag=0,ans=0,r;
string w,st[1000],s;
map<string,int> m,book;
void zhuan(string &c)
{
r=c.length();
for(int i=0;i<r;i++)
{
if(c[i]>='A'&&c[i]<='Z')
{
c[i]=c[i]+'a'-'A';
}
}
}
int main()
{
string huan,p;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{cin>>s;
zhuan(s);
m[s]=1;
//cout<<m[s]<<" "<<endl;
}
getline(cin,huan);
getline(cin,p);
l=p.length();
for(int i=0;i<l;i++)
{
if(p[i]!='.'&&p[i]!=' '&&p[i]!=',')
w.push_back(p[i]);
else
{ zhuan(w);
//cout<<w<<" ";
if(m[w]==1&&book[w]==0)
{
st[flag++]=w;
book[w]=1;
ans++;
}
w="";
}
if(p[i]=='.')
{
for(int i=0;i<flag;i++)
book[st[i]]=0;
for(int i=0;i<flag;i++)
st[i]="";
flag=0;
}
}
printf("%d",ans);
}