(File IO): input:word.in output:word.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet
题目描述
想计算他的
只奶牛的名字的好听度,每个奶牛的名字是一个长度不超过
的英文字母串。他创建了一个好名字的集合,数量为
,每个好名字的长度不超过
,奶牛的名字中每包含一个好名字(“包含”不一定要求连续),那么它的好听度就加
。所有的名字都不区分大小写,如名字
包含
,但是不包含
。
现在请你帮
计算每个奶牛名字的好听度。
输入
第
行:
个用空格隔开的整数
和
;
第
行: 第
行为第
个奶牛的名字;
第
行:第
行为第
个好名字。
输出
第
行:第
个数为第
头奶牛名字的好听度。
样例输入
5 3
Bessie
Jonathan
Montgomery
Alicia
Angola
se
nGo
Ont
样例输出
1
1
2
0
1
数据范围限制
提示
输入说明:
有
头奶牛,名字依次为
,
和
,有
个好名字分别为
.
输出说明:
包含
包含
包含
不包含任何好名字,
包含
.
解题思路
这就是一个
重循环的暴力,童鞋们应该能看得懂吧。
温馨提示:记得要转换大小写哦!
代码
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,m,len,ans[1010],l[1010],l2[110];
char a[1010][1010],b[110][31];
string s;
int main(){
freopen("word.in","r",stdin);
freopen("word.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
cin>>s;
l[i]=s.size();
for(int j=1;j<=l[i];j++)
a[i][j]=s[j-1];
}
for(int i=1;i<=m;i++)
{
cin>>s;
l2[i]=s.size();
for(int j=1;j<=l2[i];j++)
b[i][j]=s[j-1];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
len=1;
for(int k=1;k<=l[i];k++)
{
if(a[i][k]==b[j][len]||a[i][k]+32==b[j][len]||a[i][k]==b[j][len]+32)
++len;
if(len>l2[j])
{
++ans[i];
break;
}
}
}
}
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]);
}