KMP算法--poj3461
来源:互联网 发布:无锡锡山高级中学 知乎 编辑:程序博客网 时间:2024/06/02 09:44
#include <stdio.h>
#include <string.h>
#define N 1000005
char t[N],w[10005];//t为主串,w为模式串
int i,j,next[10005],sum,l;
//计算next函数,用的方法是最优化的
void get_next(){
next[0]=-1;
i=0;
j=-1;
while(w[i]){
if(j==-1||w[i]==w[j]){
i++;
j++;
if(w[i]!=w[j])
next[i]=j;
}
else
j=next[j];
}
}
//KMP算法部分
int KMP(){
i=0;
j=0;
sum=0;
l=strlen(w);
while(t[i]){
if(j==-1||w[j]==t[i]){
i++;
j++;
}
else
j=next[j];
if(j==l){
sum++;
j=next[j];
}
}
return sum;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
scanf("%s%s",&w,&t);
get_next();
KMP();
printf("%d\n",sum);
}
return 0;
}
#include <string.h>
#define N 1000005
char t[N],w[10005];//t为主串,w为模式串
int i,j,next[10005],sum,l;
//计算next函数,用的方法是最优化的
void get_next(){
next[0]=-1;
i=0;
j=-1;
while(w[i]){
if(j==-1||w[i]==w[j]){
i++;
j++;
if(w[i]!=w[j])
next[i]=j;
}
else
j=next[j];
}
}
//KMP算法部分
int KMP(){
i=0;
j=0;
sum=0;
l=strlen(w);
while(t[i]){
if(j==-1||w[j]==t[i]){
i++;
j++;
}
else
j=next[j];
if(j==l){
sum++;
j=next[j];
}
}
return sum;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
scanf("%s%s",&w,&t);
get_next();
KMP();
printf("%d\n",sum);
}
return 0;
}
0 0
- POJ3461 KMP算法
- KMP算法--poj3461
- KMP算法模板+POJ3461实现
- 再谈kmp算法 , 由poj3461
- HDU1686 POJ3461 Oulipo KMP算法
- POJ3461 Oulipo KMP算法应用
- kmp算法巩固 以poj3461为试验
- 【POJ3461】KMP算法理解 for 初学者
- poj3461 KMP算法(字符串匹配)
- poj3461(KMP)
- POJ3461 KMP
- KMP+poj3461
- poj3461 KMP
- poj3461 KMP
- poj3461 KMP
- POJ3461 KMP
- poj3461 KMP
- POJ3461——Oulipo KMP算法的应用
- Habber - IOS XMPP 客户端 教程 (终)总结与反思
- 服务器响应
- Android 常用API总结
- 改变导航栏上面系统自己带的返回按钮及颜色
- php 引用
- KMP算法--poj3461
- hadoop 2.6 HA搭建
- Java调用ffmpeg工具生成视频缩略图实例
- 0028OpenGL程序运行提示glut32.dll丢失问题的解决方案之一
- 我是菜鸟 之输入几个数,在数组中去重并且统计出现的次数
- Brainteaser:Bulb Switcher求平方根的思考
- kafka科普
- web移动端开发-将网站分享朋友圈、微信空间、朋友圈功能
- win10+Ubuntu双系统 Easybcd安装