zoukankan      html  css  js  c++  java
  • zoj 1315 Excuses, Excuses!

    题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1315

    题解 :   1  一个很简单的题 没有什么算法在里面,完全考输入输出,基本功  。

                 2  很奇怪  每个案例后面总是输出一个空行,和一般的要求不一样 

                 3 每次在调用cin.getline() 时 先用调用一次,吃掉前面cin没有管的回车换行符

                 4 判断某一个关键词在不在这个借口中时,将这个关键词一步步的移动,逐一去匹配,还要注意的是,即便匹配成功,这个关键词前面和后面不可以有字母,所以还要对匹配成功的地址进行特判。

    #include<iostream>
    #include<string>
    #include<cstdio>
    #include<cstring>
    #include<fstream>
    using namespace std;
    
    string tolowercase(string s)
    {
    
       int size=s.length();
       for(int i=0;i<size;i++)
         if(s[i]>='A'&&s[i]<='Z')   s[i]=s[i]+32;
    
       return  s;
    }
    int main()
    {
      //ifstream cin("testdata.txt");
        int k,e;
        int tag=0;
    //    bool first=true;
        while(cin>>k>>e)
        {
           tag++;
    //
    //      if(first==false)  cout<<endl;
    //      if(first==true)  first=false;
    
          string  * key=new string[k];
          for(int i=0;i<k;i++)
            cin>>key[i];
    
    
          string * excuse=new string[e];
    
          string * oriexcuse=new string[e];
    
          int *keynum=new  int [e];
    
          for(int i=0;i<e;i++)
              keynum[i]=0;
    
          char tempstring[75];
    
           //getchar();     // 吸收一个回车
            cin.getline(tempstring,75);
          for(int i=0;i<e;i++)
            {
              cin.getline(tempstring,75);
              oriexcuse[i]=tempstring;
              excuse[i]=tempstring;
              excuse[i]=tolowercase(excuse[i]);     //完成小写化
    
            }
    
    
         for(int j=0;j<e;j++)    //  对第j条借口 统计 出现了几个key
         {
            string curexcuse=excuse[j];
    
    
            int count=0;
           for(int i=0;i<k;i++)
            {
                string keyword=key[i];
                int size=keyword.length();
    
                for(int k=0;k+size-1<curexcuse.length();k++)
                {
                     string subexcuse=curexcuse.substr(k,size);
                     if(subexcuse==keyword)
                     {
                          if(k==0)
                          {
                             char ch=curexcuse[k+size];
    
                             if(ch<'a'||ch>'z')   count++;
                          }
                          else if(k==curexcuse.length()-size)
                          {
                              char ch=curexcuse[k-1];
    
                             if(ch<'a'||ch>'z')   count++;
    
                          }
    
                          else
                          {
    
                             char ch=curexcuse[k-1];
    
                             char ch2=curexcuse[k+size];
                             if((ch<'a'||ch>'z')&& (ch2<'a'||ch2>'z'))  count++;
    
    
                          }
    
                     }
                }
    
            }
    
    
           keynum[j]=count;
    
         }
    
    
    
    
           int maxnum=keynum[0];
          for(int i=0;i<e;i++)
             if(keynum[i]>maxnum)  maxnum=keynum[i];
    
    
    
           cout<<"Excuse Set #"<<tag<<endl;
           for(int i=0;i<e;i++)
             if(keynum[i]==maxnum)  cout<<oriexcuse[i]<<endl;
    
         cout<<endl;
        }
    }
    


  • 相关阅读:
    最近花了几个夜晚帮师妹整了一个企业网站
    英文学习网站
    Visual Studio 常用快捷键 (二)
    Visual Studio 常用快捷键
    学习英文之社区,博客及源码
    CodeForces 676D代码 哪里有问题呢?
    线程中调用python win32com
    Python 打包工具cx_freeze 问题记录及解决办法
    HDU1301 Jungle Roads
    HDU 1875 畅通工程再续
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3247201.html
Copyright © 2011-2022 走看看