zoukankan      html  css  js  c++  java
  • NOIP2011 普及組 統計單詞數

    题目描述

    一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

    现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章

    中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

    输入输出格式

    输入格式:

    输入文件名为stat.in ,2 行。

    第1 行为一个字符串,其中只含字母,表示给定单词;

    第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

    输出格式:

    输出文件名为stat.out 。

    只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

    输入输出样例

    输入样例#1:
    【输入样例1】 
    To 
    to be or not to be is a question 
    【输入样例2】 
    to 
    Did the Ottoman Empire lose its power at that time
    输出样例#1:
    【输出样例1】 
    2 0
    【输出样例2】 
    -1
    

    说明

    数据范围

    1≤ 单词长度≤10。

    1≤ 文章长度≤1,000,000。

    noip2011普及组第2题

    模擬即可。

    注意是獨立單詞,還有它空格和換行。

    代碼實現:

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int q=-1,ans,l,a,b;
     5 char ch[12],cn[12],word;
     6 int main(){
     7     scanf("%s",ch);
     8     l=strlen(ch);
     9     for(int i=0;i<l;i++){
    10         if(ch[i]<'a') ch[i]+=32;
    11         cn[i]=ch[i]-32;
    12     }
    13     while(word=getchar()) if(word=='
    ') break;
    14     while(word=getchar()){
    15         b++;
    16         if(word==ch[a]||word==cn[a]) a++;
    17         else{
    18             a=0;
    19             if(word!=' '&&word!='
    ')
    20                 while(word=getchar()){
    21                 b++;
    22                 if(word==' '||word=='
    ') break;
    23             }
    24         } 
    25         
    26         if(a==l){
    27             word=getchar();b++;
    28             if(word!=' '&&word!='
    '){    
    29                 while(word=getchar()){
    30                     b++;a=0;
    31                     if(word==' '||word=='
    ') break;
    32                 }
    33                 continue;
    34             } 
    35             if(q==-1) q=b-l-1;
    36             ++ans;
    37             a=0;
    38         }
    39         if(word=='
    ') break;
    40     }
    41     if(q==-1) printf("-1
    ");
    42     else printf("%d %d
    ",ans,q);
    43     return 0;
    44 }

    建議大家做一下這道非常惡心的題,有助於代碼能力的提高的。

  • 相关阅读:
    vue开发(一)安装
    Ubuntu18.04安装mysql
    使用.NET Framework开发IIS 7.0模块和处理程序拦截请求实现跳转
    Mysql 清空数据后,释放硬盘文件
    依赖注入
    ubuntu 上开发.netcore
    使用python获取微医数据
    Mysql查询某字段重复值并删除重复值
    使用pyinstaller 打包python程序
    堆(heap)和栈(stack)、内存泄漏(memory leak)和内存溢出
  • 原文地址:https://www.cnblogs.com/J-william/p/6131769.html
Copyright © 2011-2022 走看看