题意:给你一系列的关键单词,然后给你几个借口,要你找出含有关键单词最多借口,如果有多个,可以按任意顺序输出。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
struct node
{
char str[100];
int num;
}ex[25];
int n,m;
char key[25][25];
int fun();
int main()
{
int t_cnt=0;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i;
memset(key,0,sizeof(key));
memset(ex,0,sizeof(ex));
for(i=0;i<n;i++) scanf("%s",key[i]);
getchar();
for(i=0;i<m;i++)
{
gets(ex[i].str);
ex[i].num=0;
}
int imax=fun();
printf("Excuse Set #%d\n",++t_cnt);
for(int i=0;i<m;i++)
{
if(ex[i].num==imax) printf("%s\n",ex[i].str);
}
puts("");
}
return 0;
}
int fun()
{
int d=0,res=0;
char word[100];
for(int i=0;i<m;i++)
{
int len=strlen(ex[i].str);
for(int j=0;j<len;j++)
{
if(isalpha(ex[i].str[j]))
{
word[d++]=tolower(ex[i].str[j]);
}
else
{
word[d]='\0';
d=0;
for(int k=0;k<n;k++)
{
if(strcmp(key[k],word)==0) ex[i].num++;
}
}
}
res=max(ex[i].num,res);
}
return res;
}