島嶼數量(BFS廣度優先搜尋 佇列)

2021-10-04 20:40:00 字數 1322 閱讀 7054

題目:

給定乙個由'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 ...