“我们会死很久,所以活着的时候一定要很开|

jxy2012

园龄:1年2个月粉丝:1关注:2

题解:P8085 [COCI2011-2012#4] KRIPTOGRAM

读完题马上想到 kmp,但需要有一些变化。

容易发现两段单词可以匹配当且仅当它们出现的相对顺序相同,如 a a b a b cx x y x y z,因此可以想到将每个单词用它本次出现的位置与上次出现位置的差来记录它,若第一次出现则记为 inf,如 a a b a b c 可以改写成 inf 1 inf 2 2 inf

但是此时如果直接跑普通 kmp 会出现一个问题,如果文本串中这段单词中有一个在整段前出现过,而模式串中对应的单词第一次出现,就会判为不匹配,但有可能是匹配的,例如 c (a a b a b c) dx x y x y z,可以发现括号中的部分和模式串是匹配的。因此需要在 kmp 时判一下这种匹配的情况,即如果模式串中该单词第一次出现,且文本串中对应单词上次出现的位置在整段前,则也能匹配。

本文作者:jxy2012

本文链接:https://www.cnblogs.com/jxy2012/p/18272149

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   jxy2012  阅读(12)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起