码迷,mamicode.com
首页 > 其他好文 > 详细

Excuses, Excuses! UVA 409

时间:2014-07-29 14:41:50      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:算法   源代码   acm   uva   c   

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int get_word(int);
void convert_word();
int str_cmp();

char key[100][100];//保存关键词
char word[100];//保存从excuse中提取出来的词
char exc[100][100];//保存excuses
int  cnt[100];//记录每个excuse中keyword出现的次数
int max=0,j,K,E;

int main(){
 int i,N=1;
 //freopen("data","r",stdin);
 while(~scanf("%d%d",&K,&E)){
  for(i=0;i<K;i++)
   scanf("%s\n",key[i]);
  for(i=0;i<E;i++)
   gets(exc[i]);

  for(i=0;i<E;i++)
   cnt[i]=0;

  max=0;

  for(i=0;i<E;i++){
   j=0;//j为在读取excuse中单词时的标记,每新读一个excuse都要更新
   while(get_word(i)){//从excuse中提取单词
    convert_word();//将单词转化为小写字母
    if(str_cmp())//单词是否为keyword
     cnt[i]++;
    max=max>cnt[i]?max:cnt[i];
   }
  }  
  
  printf("Excuse Set #%d\n",N++);
  for(i=0;i<E;i++)
   if(cnt[i]==max)
    printf("%s\n",exc[i]);

   putchar('\n');

 }

return 0;
}

int get_word(int i){
 char c;
 int k=0;
 
 while(exc[i][j]!='\0'){
  while(!isalpha(exc[i][j])&&exc[i][j]!='\0')
  j++;

  if(exc[i][j]=='\0')
  return 0;
  
  word[k++]=exc[i][j++];
  while(isalpha(exc[i][j]))
  word[k++]=exc[i][j++];
 
  word[k]='\0';
  return 1;
 }

 return 0;
}

void convert_word(){
 int len=strlen(word),i;

 for(i=0;i<len;i++)
  if(isupper(word[i]))
   word[i]=tolower(word[i]);
 return ;
}

int str_cmp(){
 int i;

 for(i=0;i<K;i++)
  if(strcmp(key[i],word)==0)
   return 1;

 return 0;
}

Excuses, Excuses! UVA 409,布布扣,bubuko.com

Excuses, Excuses! UVA 409

标签:算法   源代码   acm   uva   c   

原文地址:http://blog.csdn.net/u011915301/article/details/38235955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!