博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【模板】KMP
阅读量:5225 次
发布时间:2019-06-14

本文共 815 字,大约阅读时间需要 2 分钟。

洛谷3375

1 #include
2 #include
3 const int maxn=1000100; 4 int lp,lt,j,f[maxn]; 5 char p[maxn],t[maxn]; 6 7 void getfail() { 8 f[1]=1; f[2]=1; j=1; 9 for (int i=2;i<=lt;i++) {10 j=f[i];11 while(j>1&&t[i]!=t[j]) j=f[j];12 if (t[i]==t[j]) f[i+1]=j+1;13 else f[i+1]=1;14 }15 } 16 17 int main() {18 scanf("%s",p+1);19 scanf("%s",t+1);20 lp=strlen(p+1); lt=strlen(t+1);21 getfail();22 j=1;23 for (int i=1;i<=lp;i++) {24 while(j>1&&p[i]!=t[j]) j=f[j];25 if (p[i]==t[j]) {26 if (j==lt) printf("%d\n",i-lt+1);27 j++;28 }29 }30 for (int i=1;i<=lt;i++) printf("%d ",f[i+1]-1);31 return 0;32 }
View Code

转载于:https://www.cnblogs.com/DriverLao/p/7794008.html

你可能感兴趣的文章
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
UNIX基础知识之输入和输出
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
图像处理中双线性插值
查看>>
RobHess的SIFT代码解析之RANSAC
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
:hover 鼠标同时触发两个元素变化
查看>>
go语言学习十三 - 相等性
查看>>
Idea 提交代码到码云(提交到github也大同小异)
查看>>
c#连接excel2007未安装ISAM解决
查看>>