題目:給你一個字符串,在後面拼接一部分使得它變成回文串,使得串最短,輸出這個回文串。
分析:KMP,dp。這裡利用KMP算法將串和它的轉置匹配,看結束時匹配的長度即可。
因為串比較長,使用KMP比較合適,KMP原理請參照AC自動機總結。
說明:╮(╯▽╰)╭。
#include
#include
#include
char strA[100001];
cha...
分类:
其他好文 时间:
2015-07-09 17:59:34
阅读次数:
246
才学了KMP,拿这题来练练手……(不过似乎有点小题大做了……这就是一题水水的KMP模板,匹配若干次,每一次从上次匹配后的位置开始,直到匹配失败。虽然用的算法“高级”一点,但是居然比暴力慢了40MS啊啊啊……Code: 1 #include 2 using namespace std; 3 const...
分类:
编程语言 时间:
2015-07-08 22:27:17
阅读次数:
421
题意:
给出一个匹配串和n个单词;
求每个单词在匹配串中出现的的最大前缀长度;
匹配串长度
题解:
当年啥也不会天真的一发KMP骗掉了50分,然后看题解说是自动机感觉好神啊;
现在回来复习自动机就把这道题切了试试;
基本的建立自动机什么的不说了;
主要就是答案的处理上我是在trie树上记录一个is的数组;
然后每个和匹配串匹配到了的结点全都标记上;
(当然这里要...
分类:
其他好文 时间:
2015-07-07 14:52:52
阅读次数:
111
#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1...
分类:
编程语言 时间:
2015-07-07 14:31:09
阅读次数:
214
24、蛤蟆的数据结构笔记之二十四串的模式匹配算法
本篇名言:“燧石受到的敲打越厉害,发出的光就越灿烂。 --
马克思”
来看下两个算法,BF和KMP算法在串的模式匹配中实现。
欢迎转载,转载请标明出处:
1. BF算法
BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行...
分类:
编程语言 时间:
2015-07-05 09:42:56
阅读次数:
194
转载自:http://www.matrix67.com/blog/archives/115 Matrix67原创如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说....
分类:
编程语言 时间:
2015-07-04 15:28:02
阅读次数:
129
首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法.
解法一
通过枚举S的子串,然后判断该字串是否为回文,由于S的子串个数大约为,加上每次判断需要的时间,所以总的时间复杂度为,空间复杂度为.
bool check(string &S, int l...
分类:
编程语言 时间:
2015-07-03 23:30:03
阅读次数:
179
首先我们看一下简单的字符串匹配.你可以把文本字符串s固定,模式字符串p从s对齐的左边缘,作为承担部分完全一致,匹配成功,失败将是模式字符串p整体向右1地点,继续检查对齐部分,重复.#朴素匹配def naive_match(s, p): m = len(s); n = len(p) for...
分类:
编程语言 时间:
2015-07-02 08:41:37
阅读次数:
143
/*字符串匹配*/
#include
using namespace std;
void get_next(string T,int *next)
{//朴素算法
int i,j;
i=1;
j=0;
next[1]=0;
while(i<T.length())
{
if(j==0 || T[i]==T[j])
{
i++;
j++;
next[i]=j;
...
分类:
编程语言 时间:
2015-07-01 18:22:16
阅读次数:
140