比赛答案

Code:
  1. const int Maxsize= 126;   
  2. #include <iostream>   
  3. #include <string>   
  4. #include <fstream>   
  5. using namespace std;   
  6.   
  7. int match(string &s,string s2)    
  8. {   
  9.     int i=0;   
  10.     int n=0;   
  11.     if(s.length()<s2.length())   
  12.         return n;   
  13.     while (i <= s.length() - s2.length())   
  14.     {   
  15.         int j = 0;   
  16.         while ((s[i] == s2[j] || (s2[j]>=97)&&(s2[j]<=122)&&(toupper(s[i])==toupper(s2[j]))) && j < s2.length())   
  17.         {   
  18.             ++i;   
  19.             ++j;   
  20.         }   
  21.         if (j == s2.length())   
  22.         {   
  23.             for(;j>0;j--)   
  24.                 s[i-j]='*';   
  25.             n++;   
  26.             continue;   
  27.         }   
  28.         i = i - j + 1;   
  29.     }   
  30.     return n;   
  31. }   
  32.   
  33. int main(){   
  34.     ofstream out("ss.txt");   
  35.     ifstream in2;   
  36.     ifstream in;   
  37.     string key[Maxsize],ss;   
  38.     in.open("keyword.txt");   
  39.     if(!in)   
  40.     cerr<<"Could not open keyword.txt"<<endl;   
  41.     int i =0,j,k=1,n,sum;   
  42.     in>>ss;   
  43.     key[i]=ss;   
  44.     i++;   
  45.     while(!in.eof())   
  46.     {   
  47.         in>>ss;   
  48.         for(j=0;j<i-1&&ss!=key[j];j++);   
  49.         if(j==i-1)   
  50.         {key[i]=ss;   
  51.         i++;   
  52.         }   
  53.     }      
  54.     cout<<i;   
  55.     in.close();    
  56.     string content;   
  57.     in2.open("content.txt");   
  58.     getline(in2,content);   
  59.     while(!in2.eof())   
  60.     {   
  61.         //输入评论文件并计算出现次数   
  62.         cout<<k;   
  63.         sum=0;   
  64.         n=0;   
  65.         for(j=0;j<i-1;j++)   
  66.         {   
  67.             n=match(content,key[j]);   
  68.             sum+=n;   
  69.         }      
  70.   
  71.     out<<k<<"/t"<<sum<<endl;   
  72.     k++;   
  73.     getline(in2,content);   
  74.     }   
  75.     in2.close();   
  76.     return 1;   
  77. }   
  78.        

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值