博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【距离GDOI:137天】 扩展KMP...字符串QAQ
阅读量:6269 次
发布时间:2019-06-22

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

   上次和黄神两人一合计,干脆我学字符串他学图论,然后两人相互教...但以蒟蒻最近这状态来看,估计会到时候也教不了QAQ

   扩展KMP大概是下面这个课件讲的这样

   http://wenku.baidu.com/view/8e9ebefb0242a8956bece4b3.html

   然后需要注意的是初始化问题:

   对于next数组,根据定义next[0]=len  ,而因为k<>0,否则next[i]=next[i-k]不成立...所以next[1]也要预处理出来,才能继续求出剩余的next

   对于extend数组,还是要预处理出ex[0],理由同上。暴力预处理即可...

   然后是P党的ansistring问题,有人说这东西会慢,而且不方便调试,蒟蒻干脆改成了char数组去模拟,还可以自己定义起点从0还是从1,我的代码是从0开始的,因为从1开始总是各种跪...估计是各种加加减减没处理好,干脆改成0了...反正以后滚去C++也是从0开始的...

   然后就是课件里面讲的那样了..

   主体代码如下...嗯有些变量名可能没声明...也没主程序...

1 const maxn=500419; 2 type 3  extype=array[0..maxn] of longint; 4  strtype=array[0..maxn] of char; 5 var 6  ex0,ex1:extype; 7  s1,s2:strtype; 8  next,sum:array[0..maxn] of longint; 9 10 procedure makenext(t:strtype;len:longint);11 var p,i,k:longint;12 begin13  k:=0;14  next[0]:=len;15  while (k+1
k+next[k] then k:=i;24 inc(i);25 end;26 end;27 28 procedure makeext(t,s:strtype;var ex:extype;len:longint);29 var p,i,k:longint;30 begin31 makenext(t,len);32 k:=0;33 while (k
k+ex[k] then k:=i;42 inc(i);43 end;44 end;
View Code

 

转载于:https://www.cnblogs.com/EC-Ecstasy/p/4165708.html

你可能感兴趣的文章
命令行man的帮助手册
查看>>
Ubuntu 16.04下为Android编译OpenCV 3.2.0 Manager
查看>>
poi 导入导出的api说明(大全)
查看>>
Fix-Mapped Addresses
查看>>
fmt标签如何计算两个日期之间相隔的天数
查看>>
Spark核心技术原理透视一(Spark运行原理)
查看>>
《Gradle权威指南》--Gradle任务
查看>>
IntelliJ IDEA创建文件时自动填入作者时间 定制格式
查看>>
Android app启动activity并调用onCreate()方法时都默默地干了什么?
查看>>
远程监视jboss应用java内存的配置
查看>>
前端如何接收 websocket 发送过来的实时数据
查看>>
JavaWeb下载文件response
查看>>
Laravel的三种安装方法总结
查看>>
SpringMVC加载配置Properties文件的几种方式
查看>>
C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginat...
查看>>
java 项目相关 学习笔记
查看>>
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>