字符串匹配-kmp
parting_soul
大道至简
展开
-
hdu 1711 Number Sequence
题目链接:hdu 1711 Number Sequencekmp模板题#include#include#include#define maxn 11111using namespace std;void get_next(char d[],int Next[]){ int i=0,k=-1; int len=strlen(d); Next[0]=-1; while(i<原创 2015-11-03 16:05:12 · 224 阅读 · 0 评论 -
poj 2406 Power Strings
题目链接:poj 2406 Power Strings题意:让你求循环子串的个数设串的长度为len,串为,S=s0,s1,s2,s3,s4····sn循环子串满足一个性质:若len/(len-next[len])的余数为零,则存在循环子串,数目为len/(len-next[len]),子串为str=s0,s1,s2···s[len/(len-next[len])-1],若余数不为零,表原创 2015-11-06 20:12:34 · 218 阅读 · 0 评论 -
hdu 1686 Oulipo /poj 3461
题目链接:hdu 1686 Oulipo题意:给你两个串,让你在第二个串中找第一个串,输出找到的个数。思路:找到一个,次数加一,然后假设这一点没有匹配继续往下找#include#include#include#define maxn 1111111using namespace std;char s[maxn],p[maxn];int Next[maxn];void Ge原创 2015-11-06 21:01:35 · 286 阅读 · 0 评论 -
hdu 1867 A + B for you again
题目链接: hdu 1867 A + B for you again题意:有两个串,让你求两个串的和,也就是头或尾部的公共串相重合,实现两个串的相加,若两个串头尾重合的长度相同,则按字典序输出。因为没有说哪一个为模式串,哪一个为匹配串,所以两个串的不同顺序都要考虑,进行两次查询公共长度。#include#include#include#define maxn 111111原创 2015-11-06 17:31:50 · 268 阅读 · 0 评论 -
朴素的字符串模式匹配算法
考虑最坏的情况,每次到最后一个字母,匹配不成功,则总共执行(n-m+1)*m 次,复杂度o(n*m)#include#include#include#define maxn 111typedef struct{ char str[maxn]; int len;}seqstring;int index(seqstring s,seqstring t){ i原创 2015-10-22 23:50:21 · 753 阅读 · 0 评论 -
kmp模板
#include#include#include#define maxn 11111using namespace std;void get_next(char d[],int Next[]){ int i=0,k=-1; int len=strlen(d); Next[0]=-1; while(i<len) { if(k==-1||d[i]==d[k]) {原创 2015-11-03 15:56:29 · 231 阅读 · 0 评论 -
hdu 2087 剪花布条
题目链接: hdu 2087 剪花布条题目的意思是求有多少个子串,子串间没有重叠部分,所以是kmp水题#include#include#include#define maxn 1111111using namespace std;char s[maxn],p[maxn];int Next[maxn],slen,plen;void GetNext(){ int i原创 2015-11-03 15:58:49 · 325 阅读 · 0 评论