1 条题解

  • 0
    @ 2025-8-24 21:35:45

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 起名真的很难
    **

    搬运于2025-08-24 21:35:45,当前版本为作者最后更新于2018-05-29 14:59:04,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这道题涉及了许多繁琐的步骤:

    1.关键词判重

    2.判断句子是否结束

    3.大小写的统一

    4.情书写得好不好

    关于第①点用一个use数组判断,若use[i]!=0那么word[i]就是出现过

    第②点就是使用找那个句点,很easy的

    第③点,这里推荐一个STL transform,还是比较好用的(tolower是变小写,toupper是变大写)

    PS:本来找句点我还用了个好东西:

    .find_first_of(".");
    .find_last_of(".");
    就是找第一个(最后一个)句点,如果有就返回位置,没有就返回-1
    
    #include<bits/stdc++.h>
    using namespace std;
    int n,tot,use[2010];
    string word[2010],sen,sent="";
    
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i)//++i比i++快
    	{
    		cin>>word[i];
    		transform(word[i].begin(),word[i].end(),word[i].begin(),::tolower);
            //关键词变小写
    	}
    	getchar();//不能少啊,坑我好久
    	getline(cin,sen);
    	transform(sen.begin(),sen.end(),sen.begin(),::tolower);//整句变小写
    	for(int i=0;i<sen.size();++i)
    	{
    		if(sen[i]=='.')//如果是  .
    		{
    			for(int j=1;j<=n;++j)
    			{
    				if(sent==word[j]&&!use[j])
    				{
    					use[j]=1,++tot;
    					break;//其实这里还可以优化,但我懒
    				}
    			}
    			sent="";
    			memset(use,0,sizeof(use));//进入下一句,所有关键词又都可以增加好感
    			continue;
    		}
    		if(sen[i]==',')
    		{
    			for(int j=1;j<=n;++j)
    			{
    				if(sent==word[j]&&!use[j])//与句号类似,没有清空use数组
    				{
    					use[j]=1,++tot;
    					break;
    				}
    			}
    			sent="";
    			continue;
    		}
    		if(sen[i]==' ')
    		{
    			for(int j=1;j<=n;++j)
    			{
    				if(sent==word[j]&&!use[j])//如果是空格说明一个单词结束了
    				{
    					use[j]=1,++tot;
    					break;
    				}
    			}
    			sent="";
    			continue;
    		}
    		sent+=sen[i];//不是句点不是逗号不是空格,那肯定是字母了
    	}
    	printf("%d",tot);//水完了
    	return 0;
    }
    

    我可不可以求一波赞٩(๑❛ᴗ❛๑)۶

    • 1

    信息

    ID
    1256
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者