码迷,mamicode.com
首页 > 编程语言 > 详细

floyd判环算法(龟兔赛跑算法)

时间:2017-12-04 13:09:29      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:img   长度   tps   指针   file   技术   dev   题目   class   

floyd判环算法(龟兔赛跑算法)

注意,这个算法是用来判断一条链+一条环的图,环的长度或者环与链的交界处的,所以此floyd非彼floyd(虽然都是一个人想出来的)。

技术分享图片

(图不是我的)

如果只要求环的长度的话,只要让h和t相遇,然后再让h跑一圈,同时计算出步数就行了。

如果要算出链和环的交界点呢?首先,指针h和t同时从S出发,速度一个为2,一个为1(不要在意细节)。当t走到链和环的交界点时,在右边的ht的距离等于st的距离。设st的距离为x,在左边的ht距离为y,那么环的长度就是x+y。现在让h和t继续走,直到m相交,那么显然右边的tm的距离就是y。由于环的长度是x+y,所以左边的tm长度就为x。现在让两个等速的点一个在s,一个在m,同时走,就会在t碰头,于是交界处的点就求出来了。

由于codevs又双叒叕上不去了,所以暂时没有题目。

floyd判环算法(龟兔赛跑算法)

标签:img   长度   tps   指针   file   技术   dev   题目   class   

原文地址:http://www.cnblogs.com/MyNameIsPc/p/7976371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!