1016B - Segment Occurrences(字符串的匹配)

时间:2023-11-11 08:15:44

题意:字符串a,字符串b,给你q个区间,让你求a的区间内字符串b出现了多少次

之前用的前缀数组做的,没想起来,发现这个其实也可以

 #include<cstdio>
#include<cstring>
int main()
{
int n,m,q;
char s[],t[];
int a[];
while(~scanf("%d %d %d",&n,&m,&q))
{
scanf("%s %s",s+,t+);
memset(a,,sizeof(a));
int i,j;
for( i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
if(s[i+j-]!=t[j])
break;
}
if(j==m+)
a[i]=;//如果出现了b字符串就把啊s[i]=t[0],a[i]=1 }
int ans,w,e;
for(i=;i<=q;i++)
{
ans=;
scanf("%d %d",&w,&e);
for(j=w;j<=e+-m;j++)//找区间中b出现的次数,e+1-m在草稿纸上画一下就知道为什么了
{
if(a[j]==)
ans++;
}
printf("%d\n",ans);
}
}
return ;
}