sdut2772 KMP的简单应用
KMP简单应用
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
输出
示例输入
a
123456
45
abc
ddd
#include <iostream>
#include <cstring>
using namespace std;
char s1[1000000],s2[1000000];
int next[1000000];//不能在函数里面定义局部变量为一百万,可以是10万 有关解析:
//http://www.ljsq.net/read/3c-2b-2b-c8-e7-ba-ce-b6-a8-d2-e5-d2-bb-b8-f6-b3-a4-b6-c8-b3-ac-b9-fd-d2-bb-b0-d9-cd-f2-b5-c4-ca-fd-d7-e9.html
int main()
{// char s1[1000000],s2[1000000];// int next[1000000];while(cin>>s1){cin>>s2;int k=-1,j=0;next[0]=-1;while(j<strlen(s2)-1){if(k==-1||s2[j]==s2[k]){j++,k++;next[j]=k;}elsek=next[k];}int i=0;j=0;while(j<strlen(s2)&&i<strlen(s1)){if(s1[i]==s2[j]||j==0){i++;j++;}elsej=next[j];}// cout<<i<<endl;if(j>=strlen(s2))cout<<i+1-strlen(s2)<<endl;elsecout<<"-1"<<endl;}return 0;
}
这个连接是学习中看的关于KMP的讲解:
http://blog.csdn.net/yutianzuijin/article/details/11954939/
http://blog.csdn.net/v_july_v/article/details/7041827
求解kmp next的另一方法:
int getnext()
{int next[maxn];next[0]=-1;next[1]=0;int s=str2.length();int i=2;int cn=0;while(i<s){if(str[i-1]==str[cn]){next[i++]=++cn;}else if(cn>0)//cn>=0cn=next[cn];else next[i++]=0;}
}
sdut2772 KMP的简单应用相关推荐
- poj 2406 还是KMP的简单应用
记住KMP是多计算一位的.其中next[i]为不为自身的最大首尾重复子串长度. 位移j=i-next[i]可以看作是构成字符串s的字串(如果i%j==0,存在这样的构成),相应的重复次数 ...
- POJ2406简单KMP
题意: 给一个字符串,求最大的前缀循环周期,就是最小的循环节对应的最大的那个周期. 思路: KMP的简单应用,求完next数组后有这样的应用:next[i] :是最大循环节的第几位 ...
- 比KMP算法更简单更快的字符串匹配算法
我想说一句"我日,我讨厌KMP!". KMP虽然经典,但是理解起来极其复杂,好不容易理解好了,便起码来巨麻烦! 老子就是今天图书馆在写了几个小时才勉强写了一个有bug的.效率不高的 ...
- hdu3746 KMP的next数组应用,求项链首尾项链循环
题意: 给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路: KMP的简单应用只要了解next数组的意义就好说了,下面总结下 next在循环方面 ...
- KMP算法--深入浅出
说明: 在网上查了各种资料,终于对KMP算法有了透彻的了解,都说KMP特简单,我咋没有察觉呢?难道是智商不在线?或许都是骗纸? 还是进入正题吧,整理整理大佬的blog KMP算法简介: KMP算法是一 ...
- UVA5876 Writings on the Wall 扩展KMP
扩展KMP的简单题. #include<stdio.h> #include<string.h> #define maxn 51010 char s[maxn],t[maxn]; ...
- Sunday算法---简单高效的字符串匹配算法
说到字符串匹配算法,估计大伙立马就想到了KMP算法,谁让KMP这么经典呢,各种算法教材里必然有KMP啊.但是KMP算法太复杂了,求next崩溃到cry.难道就没有比KMP更简单更高效的算法,no,有的 ...
- KMP算法真的有这么难吗?(清晰详细版)
KMP算法我一年之前就接触了,但由于实在难以理解next[]求法故放弃,每次做一次字符串匹配的时候,很多情况下都是暴力解决,除了极个别情况把next[]求法背成模板求解AC. 注意:KMP算法已经成为 ...
- Python---哈夫曼树---Huffman Tree
今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...
最新文章
- html,css,javascript之间的关系是什么?各是负责哪方面工作的?
- 如何在Objective C中声明Block?
- Python计算机视觉:第二章 图像局部描述符
- 编程之美 set 1 不要被阶乘吓倒
- 使用 OpenLDAP 集中管理用户帐号
- C++ 语法都不会怎么写代码? 03
- bzoj1925地精部落——数学
- MapReduce InputFormat之FileInputFormat
- windows操作系统,python环境下django的自动安装
- 设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层
- 关于JAVA自带MD5的方法
- [轉]VS 2010 通过 Architecture创建UML类图设计
- sql与ORACLE链接服务器相互访问方法
- 翻译: 3.2. 从零开始实现线性回归 深入神经网络 pytorch
- PRML学习总结(1)——Introduction
- 微信小程序标签样式的优先级
- GIS开发必备的地理坐标系知识
- Java教师工资习题
- java pdf文件转换图片,pdf文件转图片(java实现)
- 海域重力场与垂直基准产品构建及质量评估系统