给出若干个key
再给出若干个借口;
如果哪个借口中含有的key最多,则输出。
思路:
用map将每一个key进行映射,再从每一个借口中找到与之相对应的单词,如果存在,则cnt++,然后输出cnt最大的那个句子。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
int casei=1;
int m,n;
while(cin>>m>>n)
{
int t;
int jilu[25];
cin.ignore();
int maxi=-1;
map<string,int> ma;
for(int i=0;i<m;i++)
{
string s;
cin>>s;
ma[s]=1;
}
getchar();
char c[25][75];
for(int i=0;i<n;i++)
{
gets(c[i]);
string s;
s.clear();
int cnt=0;
for(int j=0;c[i][j];j++)
{
if(islower(c[i][j]))
s+=c[i][j];
else if(isupper(c[i][j]))
s+=tolower(c[i][j]);
else
{
if(ma[s])
cnt++;
s.clear();
}
}
// cout<<s<<endl;
if(cnt>maxi)
{
maxi=cnt;
t=0;
jilu[t++]=i;
}
else if(cnt==maxi)
{
jilu[t++]=i;
}
}
printf("Excuse Set #%d\n",casei++);
for(int i=0;i<t;i++)
cout<<c[jilu[i]]<<endl;
printf("\n");
}
}