原理:

不给予证明啦(懒得一批

但是代码中有给还算详细的注释

参考:https://www.cnblogs.com/yjiyjige/p/3263858.html

模板题:

洛谷P3375:

https://www.luogu.org/problemnew/show/P3375

代码:

#include<iostream>
#include<cstring>
#define MAXN 1000010
using namespace std;
char a[MAXN],b[MAXN];
int next[MAXN];
int la,lb,j; //j为所匹配到的最大的后缀的前缀最后一位
int main()
{
cin>>a+;//从一开始存
cin>>b+;
la=strlen(a+);
lb=strlen(b+);
for(int i=;i<=lb;i++)//匹配匹配串
{
while(j&&b[j+]!=b[i])//判j不为零因为在第一位就不用往前找了
//如果不匹配就往前找
j=next[j];
if(b[j+]==b[i])//匹配就往下推
j++;
next[i]=j;
}
j=;
for(int i=;i<=la;i++)//匹配文本串 同上
{
while(j&&b[j+]!=a[i])
j=next[j];
if(b[j+]==a[i])
j++;
if(j==lb)//找到一个匹配串输出位置
cout<<i-lb+<<endl;
}
for(int i=;i<=lb;i++)
cout<<next[i]<<" ";
}

后记:

培训D2T3考到了KMP

上午也有讲思路

但是身为蒟蒻会思路不会代码啊

直接放弃了T3打前面的两题

晚上又花了一点时间理解

打完了这个板子

最新文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
  2. No module named &#39;urllib2&#39;
  3. Java基础之类的初始化顺序
  4. (3)JSTL的fn方法库
  5. 你了解javascript中的function吗?(1)
  6. druid连接池配置
  7. 报错:java.lang.IllegalStateException: Cannot call sendError() after the response has been committed(待解答)
  8. vimium
  9. Poj 3239 Solution to the n Queens Puzzle
  10. python 模拟ajax查询社工库...
  11. (十二)学习CSS之box-sizing 属性
  12. Android_Intent意图详解
  13. USB接口的SmartCard Class协议标准:ICCD and CCID
  14. IOS多线程加锁
  15. poj-2337(欧拉回路输出)
  16. Pandas学习1 --- 数据载入
  17. Quick-Cocos2d-x 新建项目
  18. 2.HBase In Action 第一章-HBase简介(1.1数据管理系统:快速学习)
  19. Reflector_8.3.0.93_安装文件及破解工具
  20. LeakCanary,30分钟从入门到精通

热门文章

  1. HttpServlet的请求转发理解
  2. 机器学习——XGBoost
  3. 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
  4. jquery中Ajax提交配合PHP使用的注意事项-编码
  5. pod install 出错
  6. MySQL出现时区错误的解决方法
  7. PHP基础--strtr和str_replace字符替换函数
  8. .NET开源工作流RoadFlow-表单设计-复选按钮组
  9. jquery mobile 自定义图标
  10. 基本类型int强转short时发生了什么?