KMP模板,就不解释了

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define int long long
#define maxn 1000000+10
#define INF 9187201950435737471
#define rep(i,s,e) for(register int i=s;i<=e;++i)
#define dwn(i,s,e) for(register int i=s;i>=e;--i)
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int j,len1,len2;
char A[maxn],B[maxn];
int p[maxn];
void init()
{
j=;
p[]=;
rep(i,,len2)
{
while(j>&&B[i]!=B[j+]) j=p[j];
if(B[i]==B[j+]) ++j;
p[i]=j;
}
}
signed main()
{
scanf("%s",A+);
scanf("%s",B+);
len1=strlen(A+);
len2=strlen(B+);
init();
j=;
rep(i,,len1)
{
while(j>&&A[i]!=B[j+]) j=p[j];
if(A[i]==B[j+]) ++j;
if(j==len2)
{
write(i-len2+);
putchar('\n');
j=p[j];
}
}
rep(i,,len2) write(p[i]),putchar(' ');
return ;
}

请各位大佬斧正(反正我不认识斧正是什么意思)

最新文章

  1. Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
  2. VM virtuaBox异常关机启动不了的解决方案
  3. 编译Linux内核
  4. ACM: The Suspects-并查集-解题报告
  5. sencha怎么在control层调用按钮
  6. [转]linux /proc/cpuinfo 文件分析
  7. 通过Nethogs查看服务器网卡流量情况
  8. 2015CCPC小记
  9. 夺命雷公狗—angularjs—15—内置封装好的计时器$interval和$timeout
  10. ZOJ-2342 Roads 二分图最小权值覆盖
  11. 对于transform的新认识
  12. Entity FrameWork 与 NHibernate
  13. SCOM2012端口需求
  14. MySql 命令积累
  15. CodeForces 710A King Moves
  16. 资深小白带你走进OS Memory
  17. moment.js常用时间示例,时间管理
  18. Nginx 常用配置
  19. UITextField 输入金额,小数点的控制输入
  20. 最好用的编辑器之一:Vim-Go环境搭建

热门文章

  1. Navicat12下载、激活工具、激活教程
  2. WPF内嵌网页的两种方式
  3. HA 高可用集群概述及其原理解析
  4. ASP.NET面试题130道
  5. serviceBehaviors_dataContractSerializer_maxItemsInObjectGraph 关键**Behavior
  6. Java任务调度框架Quartz教程
  7. Windows server 2012 R2下安装sharepoint2013
  8. grep过滤日志
  9. javascript设计模式之适配器模式
  10. ORM 查询练习