Appoint description:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
using namespace std;
map<string,int > Q,QQ;
char c[1000];
char s1[100][1000],s2[100][1000];
char s[1000];
int main()
{
int n,m,Case=0;
int len;
while(~scanf("%d%d",&n,&m))
{
Case++;
Q.clear();
for(int i=0; i<n; i++)
{
scanf("%s",s);
len=strlen(s);
for(int j=0; j<len; j++)
if(s[j]>='A'&&s[j]<='Z')
s[j]=s[j]-'A'+'a';
Q[s]=1;
}
getchar();
for(int i=0; i<m; i++)
{
fgets(s1[i],sizeof(c),stdin);
}
int Max=0,biao[100],q=0,p=0;
for(int i=0; i<m; i++)
{
len=strlen(s1[i]);
int num=0;
QQ.clear();
for(int j=0; j<len; j++)
{
if(s1[i][j]>='A'&&s1[i][j]<='Z')
s2[p][q++]=s1[i][j]-'A'+'a';
else
s2[p][q++]=s1[i][j];
if((s1[i][j]>'z'||s1[i][j]<'a')&&(s1[i][j]>'Z'||s1[i][j]<'A'))
{
s2[p][q-1]='\0'; //将每个单词分离出来,防止包括其他字符如,空格,回车,等
//cout<<s2[p];
if(Q[s2[p]]==1&&QQ[s2[p]]==0)
{
num++;
//cout<<s2[p]<<"@";
QQ[s2[p]]=1; //防止一个句子中出现多次相同的时候出现累加
}
p++;
q=0;
}
}
biao[i]=num; //将每个句子的错词个数保存起来
if(Max<num)
Max=num;
}
//cout<<Max;
printf("Excuse Set #%d\n",Case);
for(int i=0; i<m; i++)
{
if(biao[i]==Max)
printf("%s",s1[i]);
}
printf("\n");
}
}