古月残辉
止于至善
C++博客
首页
新随笔
联系
聚合
管理
随笔-20 评论-16 文章-36 trackbacks-0
KMP算法的Fail函数
KMP算法真的是很强大,特别是Fail()的思想,它可以解决许多字符串内重复子串的问题,包括回文,前缀后缀匹配等。比如POJ的2406 Power Strings 1961 Period 2752 Seek the Name, Seek the Fame,都是利用了Fail()的值与字符下标的关系来解决的。
下面是Fail()函数的实现代码:
void
fail(
char
a[],
int
b[])
{
int
len
=
strlen(a);
for
(
int
i
=
1
; i
<
len; i
++
)
{
int
j
=
b[i
-
1
];
while
( (
*
(a
+
i)
!=*
(a
+
j
+
1
)
&&
(j
>=
0
)) ) j
=
b[j];
if
(
*
(a
+
i)
==*
(a
+
j
+
1
)) b[i]
=
j
+
1
;
else
b[i]
=
-
1
;
}
}
posted on 2009-03-13 14:07
古月残辉
阅读(968)
评论(0)
编辑
收藏
引用
所属分类:
Theory
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
最大流算法小结
【转载】背包问题九讲-P03多重背包问题
【转载】背包问题九讲(2)——完全背包问题
【转载】背包问题九讲(1)——01背包问题
素数判定法
Stirling公式
KMP算法的Fail函数
约瑟夫环数学算法的优化(转)
Catalan数(转自百度百科)
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
(18)
SGU(1)
计算几何(17)
随笔档案
(20)
2011年5月 (1)
2009年7月 (4)
2009年6月 (14)
2009年3月 (1)
文章分类
(36)
Application(2)
Language(3)
POJ(17)
Template(5)
Theory(9)
文章档案
(36)
2009年7月 (1)
2009年6月 (10)
2009年5月 (1)
2009年4月 (7)
2009年3月 (17)
新闻档案
(1)
2009年3月 (1)
牛人博客
&豪
c4pt0r's Blog
cockerel's blog
Felicia
HaiFeng
IF~~
imlazy's Blog
农夫三拳
吴豪
搜索
积分与排名
积分 - 57897
排名 - 388
最新评论
1. re: POJ 1471 Triangles
谢谢指点,原来没有仔细地考虑图的真实情况,一直WA,发现画出来的图和输入的情况大不一样
--zephyr
2. re: POJ 1031 Fence
不明白那个公式是怎么推出来的
--dereky
3. re: 约瑟夫环数学算法的优化(转)
评论内容较长,点击标题查看
--bnuzhanyu
4. 黑书啊[未登录]
用了很久,发现自己的模板居然对POJ1410过不了,错了。
现在想买黑书,但是想想就要退了,不买了。
--代码疯子
5. re: POJ 1031 Fence
就算dl=rdă代入dI=I0*|cosă|*dl*之后也是dI=k*h*|cosă|*dă呀,为什么会解出I=ă*k*h来?
--Zeno
6. re: POJ 1031 Fence
dI=I0*|cosα|*dl*h中的|cosα|被无视了么?
--Zeno
7. re: 约瑟夫环数学算法的优化(转)
评论内容较长,点击标题查看
--Stan
8. re: POJ 1265 Area
博主你好,我刚刚仰慕了一下您的poj1265的代码,我想知道结论1的证明,您有吗?可以mail我675313675@qq.com,先谢谢了!
--祝你好运
9. re: 约瑟夫环数学算法的优化(转)
没有错 当n,m相差很大时
--va
10. re: 约瑟夫环数学算法的优化(转)
评论内容较长,点击标题查看
--Hec
阅读排行榜
1. POJ 1031 Fence(2403)
2. POJ 1039 Pipe(1262)
3. POJ 1981 Circle and Points & 2693 Chocolate Chip Cookies(1002)
4. POJ 1113 Wall(977)
5. POJ 1151 Atlantis(947)
6. 计算几何入门题(转)(829)
7. POJ 1673 EXOCENTER OF A TRIANGLE(792)
8. POJ 1265 Area(792)
9. POJ 1696 Space Ant(782)
10. 计算几何模板(701)
评论排行榜
1. POJ 1031 Fence(3)
2. 计算几何模板(1)
3. POJ 1113 Wall(1)
4. POJ 1265 Area(1)
5. POJ 1471 Triangles(1)