*扩展KMP
来源:互联网 发布:三月软件小组 编辑:程序博客网 时间:2024/04/27 21:38
今天是2017/7/8,DCDCBigBig的第二十二篇博文
EXKMP(next+extend)
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int l1,l2,next[100001],extend[100001];char s[100001],t[100001];void getnext(){ int a=0,p; next[0]=l2; for(int i=1,j=-1;i<l2;i++,j--){ if(j<0||i+next[i-a]>=p){ if(j<0){ p=i; j=0; } while(p<l2&&t[p]==t[j]){ p++; j++; } next[i]=j; a=i; }else next[i]=next[i-a]; }}void getex(){ int a=0,p; for(int i=0,j=-1;i<l1;i++,j--){ if(j<0||i+next[i-a]>=p){ if(j<0){ p=i; j=0; } while(p<l1&&s[p]==t[j]){ p++; j++; } extend[i]=j; a=i; }else extend[i]=next[i-a]; }}int main(){ memset(next,0,sizeof(next)); scanf("%s%s",s,t); l1=strlen(s); l2=strlen(t); getnext(); getex(); for(int i=0;i<l2;i++){ printf("%d ",next[i]); } printf("\n"); for(int i=0;i<l1;i++){ printf("%d ",extend[i]); } return 0;}
谈
阅读全文
0 0
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展 KMP
- 扩展kmp
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- 扩展KMP
- *扩展KMP
- 扩展kmp
- Hdu 4565 So Easy! 矩阵快速幂+共轭数
- 配置JAVA环境变量中CLASSPATH变量的作用
- 3520. 【NOIP2013模拟11.7B组】原根(math)
- Chapter fourteen ARM概述(3)
- AsyncTask
- *扩展KMP
- jQuery源码阅读(六)---jQuery实例方法解析
- 【C++】C++琐碎的知识点
- 跟我一起学C语言
- java 坦克大战
- 构造Json字段
- java接口
- 最新Python实现12306余票查询系统
- Android-自定义UI与触摸事件