題目:
給定乙個由'1'
(陸地)和'0'
(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。
示例 1
:輸入:
11110
11010
11000
00000
輸出:1
示例 2
:輸入:
11000
11000
00100
00011
輸出:3
解題思路:
遍歷每乙個點,在每一次迴圈中,判斷是否當前點是『1』;
如果是的話開始bfs,將本點入隊,接下來while(佇列非空)來將這個點上下左右4個點push到佇列中並把它們置為『0』(如果這4個點是『1』 && 沒有越界的話),不要忘記在這個while中pop掉隊頭元素
偽**(相當不全面,是思考時候的草紙。。。)
探索佇列和棧 島嶼數量bfs廣度優先搜尋
給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 00100 0...
廣度優先搜尋,島嶼數量
當找到初始 1 的時候,將其座標入隊,依據佇列的fifo特性,從佇列中取出座標,對其座標的上下左右元素進行訪問。遞迴形式簡潔易懂 class solution object defnumislands self,grid int iflen grid 0 return 0else self.rows...
BFS廣度優先搜尋
廣度優先搜尋,利用佇列實現,結束標誌是隊列為空的時候 承接dfs的演算法實現的講例,對於迷宮問題我們也可以採取廣度優先搜尋實現 include iostream include cstdio include cstdlib using namespace std int map 55 55 int ...