#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int f[N][N];
int n,Q;
char a[N][N];
char b[N];
int main()
{
scanf("%d%d",&n,&Q);
for(int i=1;i<=n;i++)scanf("%s",a[i]+1);
for(int i=1;i<=10;i++)f[i][0]=f[0][i]=i;
while(Q--)
{
int i,j;
int lim,cnt=0;
scanf("%s%d",b+1,&lim);
for(int k=1;k<=n;k++)
{
for(i=1;a[k][i]!='\0';i++)
{
for(j=1;b[j]!='\0';j++)
{
f[i][j]=min(f[i-1][j]+1,f[i][j-1]+1);
f[i][j]=min(f[i][j],f[i-1][j-1]+(a[k][i]!=b[j]));
}
}
if(f[i-1][j-1]<=lim)cnt++;
}
cout<<cnt<<endl;
}
return 0;
}
AcWing 899. 编辑距离
最新推荐文章于 2024-09-10 19:16:08 发布