uva 409 - Excuses, Excuses!

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=350

这题没什么难度,一定要注意的地方是单词的判断,比如搜索单词word ,如果出现dword是不算的。这题一次性ac

#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
void convert(int len,string src[],string dis[]){       //拷贝到复制数组进行大小写转换
    for(int i=0;i<len;i++){
        dis[i]=src[i];
        for(int j=0;j<src[i].size();j++){
            if(islower(dis[i][j]))
                dis[i][j]-=32;
        }
        
    }
}
int main(){
    int k,e,num[20],cishu=1;
    string words[20],excuses[20],cpword[20],cpexcuses[20];
    while(cin>>k>>e){
        getchar();
        int temp=0;//最高出现次数以及出现句子ID
        for(int i=0;i<k;i++)
            getline(cin,words[i]);
        convert(k,words,cpword);
        for(int i=0;i<e;i++)
            getline(cin,excuses[i]);
        convert(e,excuses,cpexcuses);
        for(int i=0;i<e;i++){
            int numtemp=0;
            for(int j=0;j<k;j++){
                int start=0;
                while((temp=cpexcuses[i].find(cpword[j],start))!=-1){
                    start=temp+1;
                    if(temp==0){
                        if(isupper(cpexcuses[i][cpword[j].size()]))
                            continue;
                    }    
                    else{
                        if(isupper(cpexcuses[i][temp-1]))
                            continue;
                        if(isupper(cpexcuses[i][temp+cpword[j].size()]))
                            continue;
                    }
                    numtemp++;
                }
            }
            num[i]=numtemp;
        }
        int numId=0;
        for(int i=0;i<e;i++){
            if(num[i]>numId)
                numId=num[i];
        }
        cout<<"Excuse Set #"<<cishu++<<endl;
        for(int i=0;i<e;i++)
            if(num[i]==numId)
                cout<<excuses[i]<<endl;
        cout<<endl;
    }
}

 

 

posted on 2013-12-09 15:53  云在心  阅读(142)  评论(0)    收藏  举报

导航