有多组数据
读入两数,为借口数量和关键字数量
再读入借口和关键字
输出关键字最多的借口(可以输出多个)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
int m,n,i,max,flag,count[1000],j,k,l,s=0;
char word[1000][50],sen[1000][200],dd[1000][200];
while(scanf("%d%d",&m,&n)==2)
{
s++;
max=0;
memset(count,0,sizeof(count));
for(i=0; i<m; i++)
scanf("%s",word[i]);
getchar();
for(i=0; i<n; i++)
{
gets(sen[i]);
strcpy(dd[i],sen[i]);
for(j=0; j<strlen(dd[i]); j++)
{
if(isupper(dd[i][j]))
dd[i][j]+=32;
}
for(j=0; j<m; j++)
{
for(k=0; k<strlen(dd[i])-strlen(word[j]); k++)
{
if(dd[i][k]==word[j][0])
{
for(l=0,flag=1; l<strlen(word[j]); l++)
{
if(dd[i][k+l]!=word[j][l])
{
flag=0;
break;
}
}
if(flag==1&&isalpha(dd[i][k+l])==0&&isalpha(dd[i][k-1])==0)
count[i]++;
}
}
}
if(count[i]>max)
max=count[i];
}
printf("Excuse Set #%d\n",s);
for(i=0; i<n; i++)
{
if(count[i]==max)
puts(sen[i]);
}
putchar('\n');
}
return 0;
}
uva409
最新推荐文章于 2015-07-21 11:13:31 发布