(File IO): input:word.in output:word.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet
题目描述
F
J
FJ
FJ想计算他的
N
(
1
<
=
N
<
=
1000
)
N(1<=N<=1000)
N(1<=N<=1000)只奶牛的名字的好听度,每个奶牛的名字是一个长度不超过
1000
1000
1000的英文字母串。他创建了一个好名字的集合,数量为
M
(
1
<
=
M
<
=
100
)
M(1<=M<=100)
M(1<=M<=100),每个好名字的长度不超过
30
30
30,奶牛的名字中每包含一个好名字(“包含”不一定要求连续),那么它的好听度就加
1
1
1。所有的名字都不区分大小写,如名字
“
B
e
s
s
i
e
”
“Bessie”
“Bessie”包含
“
B
e
”
、
“
s
I
”
、
“
E
E
”
、
“
E
s
”
“Be”、“sI”、“EE”、“Es”
“Be”、“sI”、“EE”、“Es”,但是不包含
“
e
B
”
“eB”
“eB”。
现在请你帮
F
J
FJ
FJ计算每个奶牛名字的好听度。
输入
第
1
1
1行:
2
2
2个用空格隔开的整数
N
N
N 和
M
M
M;
第
2..
N
+
1
2..N+1
2..N+1行: 第
i
+
1
i+1
i+1行为第
i
i
i个奶牛的名字;
第
N
+
2..
N
+
M
+
1
N+2..N+M+1
N+2..N+M+1行:第
N
+
i
+
1
N+i+1
N+i+1行为第
i
i
i个好名字。
输出
第
1..
N
1..N
1..N行:第
i
i
i个数为第
i
i
i头奶牛名字的好听度。
样例输入
5 3
Bessie
Jonathan
Montgomery
Alicia
Angola
se
nGo
Ont
样例输出
1
1
2
0
1
数据范围限制
提示
输入说明:
F
J
FJ
FJ有
5
5
5头奶牛,名字依次为
"
B
e
s
s
i
e
"
,
"
J
o
n
a
t
h
a
n
"
,
"
M
o
n
t
g
o
m
e
r
y
"
"Bessie", "Jonathan","Montgomery"
"Bessie","Jonathan","Montgomery",
A
l
i
c
i
a
"
Alicia"
Alicia"和
"
A
n
g
o
l
a
"
"Angola"
"Angola",有
3
3
3个好名字分别为
"
s
e
"
,
"
n
G
o
"
和
"
O
n
t
"
"se","nGo"和 "Ont"
"se","nGo"和"Ont".
输出说明:
"
B
e
s
s
i
e
"
"Bessie"
"Bessie" 包含
"
s
e
"
,
"
J
o
n
a
t
h
a
n
"
"se", "Jonathan"
"se","Jonathan"包含
"
O
n
t
"
,
"
M
o
n
t
g
o
m
e
r
y
"
"Ont", "Montgomery"
"Ont","Montgomery"包含
"
n
G
o
"
、
"
O
n
t
"
,
”
A
l
i
c
i
a
“
"nGo"、"Ont",”Alicia“
"nGo"、"Ont",”Alicia“不包含任何好名字,
"
A
n
g
o
l
a
"
"Angola"
"Angola"包含
"
n
G
o
"
"nGo"
"nGo".
解题思路
这就是一个
3
3
3重循环的暴力,童鞋们应该能看得懂吧。
温馨提示:记得要转换大小写哦!
代码
#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]);
}