floyd判环算法(龟兔赛跑算法)
生活随笔
收集整理的這篇文章主要介紹了
floyd判环算法(龟兔赛跑算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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又雙叒叕上不去了,所以暫時沒有題目。
轉載于:https://www.cnblogs.com/MyNameIsPc/p/7976371.html
總結
以上是生活随笔為你收集整理的floyd判环算法(龟兔赛跑算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常规dll 的接口函数定义+客户端程序接
- 下一篇: IDM下载资源提示无法连接到服务器,代理