zoukankan      html  css  js  c++  java
  • 洛谷P2264 情书

    P2264 情书

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

    提交该题 讨论 题解 记录

    最新讨论

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

    题目背景

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

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

    题目描述

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

    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字符。

    分析:读懂题目非常关键,单词是连续出现的,而不是寻找子串,而且单词之间会有符号分割,左右用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
    ", ans);
    
        return 0;
    }
  • 相关阅读:
    Jvm年轻代复制到Survivor To区时,对象存放不下会发生什么?
    Jvm内存布局和Java对象内存布局
    ArrayList的removeIf和iterator.remove性能比较
    闲着没事做,用js做了一个冒泡排序的动画
    对象与this
    idea 简记
    线程按序交替
    大数阶乘
    序列化 与 反序列化
    人月神话
  • 原文地址:https://www.cnblogs.com/zbtrs/p/5837844.html
Copyright © 2011-2022 走看看