題目;
題意:一個棋盤中間有一個聯通塊,給你一個起點讓你從起點開始繞聯通塊外圍一圈并回到起點,求最小步數。
分析:
首先根據資料的範圍比較小,是以覺得應該是搜尋,而且是bfs。
樸素的想法是從起點開始bfs 8個方向擴充,不過這樣肯定要跪。
注意到這個題目的特點:路徑要圍一個聯通塊,而我們一般做的bfs是從一個起點到終點,這之間可以轉化嗎?
當然可以,圍起聯通塊相當于從聯通塊邊界上一點出發向兩邊bfs到起點!!!!!
具體實作的話,可以取聯通塊右邊界的一條線段,然後枚舉上面所有點,向兩邊bfs(舍棄一個方向)。
總結:
bfs處理圍一個圖形的問題可以轉化成圖形上一點向兩邊bfs到起點