hdu 1711 hdu 1686 hdu 2203 KMP基本应用
来源:互联网 发布:js给div加class属性 编辑:程序博客网 时间:2024/05/29 13:52
View Code
#include<cstdio>
#include<cstring>
int n,m;
int a[1000010],b[10010];
int p[11111];
void getp(){
p[1]=0;
int i,j=0;
for(i=2;i<=m;i++){
while(j>0&&b[j+1]!=b[i]) j=p[j];
if(b[j+1]==b[i]) j+=1;
p[i]=j;
}
}
int kmp()
{
int i,j=0,cnt=0;
for(i=1;i<=n;i++){
while(j>0&&b[j+1]!=a[i]) j=p[j];
if(b[j+1]==a[i]) j+=1;
if(j==m){
return i-j+1;
j=p[j];
}
}
return -1;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int j=1;j<=m;j++) scanf("%d",&b[j]);
getp();
printf("%d\n",kmp());
}
}
hdu 1686
View Code
#include<cstdio>
#include<cstring>
int n,m;
char a[1000010],b[10010];
int p[11111];
void getp(){
p[1]=0;
int i,j=0;
for(i=2;i<=m;i++){
while(j>0&&b[j+1]!=b[i]) j=p[j];
if(b[j+1]==b[i]) j+=1;
p[i]=j;
}
}
int kmp()
{
int i,j=0,cnt=0;
for(i=1;i<=n;i++){
while(j>0&&b[j+1]!=a[i]) j=p[j];
if(b[j+1]==a[i]) j+=1;
if(j==m){
cnt++;
j=p[j];
}
}
return cnt;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s%s",b+1,a+1);
m=strlen(b+1);
n=strlen(a+1);
getp();
printf("%d\n",kmp());
}
}
hdu 2203
View Code
#include<cstdio>
#include<cstring>
char b[100010];
char a[200010];
int p[100010];
int n,m;
void get()
{
p[1]=0;
int i,j=0;
for(i=2;i<=m;i++)
{
while(j>0&&b[j+1]!=b[i]) j=p[j];
if(b[j+1]==b[i]) j+=1;
p[i]=j;
}
}
bool kmp()
{
int i,j=0,cnt=0;
for(i=1;i<=n;i++)
{
while(j>0&&b[j+1]!=a[i]) j=p[j];
if(b[j+1]==a[i]) j+=1;
if(j==m)
{
cnt++;
return true;
}
}
return false;
}
char tmp[100010];
int main()
{
while(scanf("%s%s",a+1,b+1)!=EOF)
{
m=strlen(b+1);
strcpy(tmp,a+1);
strcat(a+1,tmp);
n=strlen(a+1);
get();
if(kmp())
printf("yes\n");
else printf("no\n");
}
return 0;
}
- hdu 1711 hdu 1686 hdu 2203 KMP基本应用
- 【KMP应用】HDU 1711
- hdu 1686 kmp典型应用
- KMP算法 hdu 1711 hdu 2203
- hdu 1711(KMP的简单应用)
- HDU 3336 kmp的应用
- HDU 2594 kmp简单应用
- hdu(kmp的应用)
- hdu 2203 (kmp)
- HDU-2203(KMP)
- HDU 2203 kmp
- hdu 2203(KMP)
- HDU 2203 KMP
- HDU 2203 KMP
- 字符串 KMP HDU 2203
- HDU 2203(KMP算法)
- HDU 1686 Oulipo (kmp)
- HDU-1686(KMP)
- 线段树【第二小节】
- Stanford Machine Learning -- 第四讲 Machine Learning System design
- hdu 3564 树状数组的灵活应用
- hdu 1166 树状数组简单题
- KMP匹配模板
- hdu 1711 hdu 1686 hdu 2203 KMP基本应用
- poj 3875 RMQ或线段树求区间最值
- hdu 1695 hdu 4135 容斥原理求1-n 区间内与r互质的个数
- poj 3904 sky code 容斥原理
- poj 2773 容斥原理求第k个与m互质的数
- UVA 10325 lottery 容斥原理
- hdu KMP中级题目总汇
- kmp next函数 kmp的周期问题,深入了解kmp中next的原理
- poj KMP题目总汇