首页 > 代码库 > 洛谷P2264 情书

洛谷P2264 情书

P2264 情书

    • 88通过
    • 971提交
  • 题目提供者lin_toto
  • 标签字符串
  • 难度提高+/省选-

提交该题 讨论 题解 记录

最新讨论

  • yyy快把题目改回来
  • 这题的题目好逗啊。。。
  • 情书std

题目背景

一封好的情书需要撰写人全身心的投入。崔君阳同学看上了一中的许芳煜想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他。

PS:御坂 美琴?高坂 穂乃果?アズキ?ワニら?チョコラ最高!

题目描述

为了帮助他,我们定义一个量化情书好坏的标准感动值。判断感动值的方法如下:

1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每一单词在同一句话中出现多次感动值不叠加,不同单词不受影响。保证输入的单词不重复。

2.每句话以英文句号定界。

3.全文不区分大小写。

输入输出格式

输入格式:

 

第一行包含一个数字n,表示导致感动值提升的词汇列表中单词的数量,随后n行是给定单词,每行一个。保证单词只包含英文字母。

最后一行为情书正文,保证只包含以下几种字符: 英文字母、数字、空格、英文逗号、英文句号。

 

输出格式:

 

一个数字g,表示情书带来的感动值。

 

输入输出样例

输入样例#1:
3lovesomuchI love you so much.
输出样例#1:
3

说明

对于所有的数据,保证1 ≤ n,m,k ≤ 100,每个单词不超过50字符,全文不超过1000字符。

分析:读懂题目非常关键,单词是连续出现的,而不是寻找子串,而且单词之间会有符号分割,左右用string保存,不断地更新string,然后与每个没有出现过的单词进行比对即可,要注意这种字符串的题目大多都有一个enter在输入里,所以在输入情书之前要加上一个getchar()来过滤enter.

#include <cstdio>#include <string>#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int maxn = 110;int vis[maxn],ans,n;string s[maxn],sentence;string zhuanhuan(string x){    for (int i = 0; i < x.size(); i++)     //统一将大写转换为小写        if (x[i] >= A && x[i] <= Z)            x[i] = x[i] - A + a;    return x;}int main(){    scanf("%d", &n);    for (int i = 1; i <= n; i++)        cin >> s[i];    getchar();   //读取enter.    getline(cin, sentence);    for (int i = 0; i < sentence.size(); i++)    {        if (sentence[i] == .)            memset(vis, 0, sizeof(vis));        else            if (sentence[i] !=   && sentence[i] != ,)            {            string temp;            for (; sentence[i] !=   && sentence[i] != , && sentence[i] != .; i++)                temp += sentence[i];            i--;            for (int j = 1; j <= n; j++)                if (zhuanhuan(temp) == zhuanhuan(s[j]) && !vis[j])                {                ans++;                vis[j] = 1;                break;                }            }    }    printf("%d\n", ans);    return 0;}

 

洛谷P2264 情书