牛客題霸 島嶼數量

2022-07-11 15:54:09 字數 625 閱讀 9855

給定乙個方格圖,求聯通塊的個數。

求聯通塊,並查集可做。

我們可以把所有相鄰的兩個是1的位置,用並查集合並起來,最後計算有多少個並查集即可。

具體實現:掃瞄整個地圖,如果是1,看其上下左右是不是1,如果是,合併。

詳見**,附有注釋。

class solution ;

int dy[4] = ;

int getid(int x,int y)

int find(int x)

void merge(int a,int b,int x,int y)

bool judge(int x,int y)

int solve(vector>& grid)

for (int i = 0; i < n; ++i)

for (int j = 0; j < m; ++j)

if (grid[i][j] == '1') vis[find(getid(i, j))] = 1;

int ans = 0;

for (int i = 0; i < n * m; ++i)

ans += vis[i];

return ans;

}};

牛客題霸 島嶼數量 C 題解 答案

牛客題霸 島嶼數量 c 題解 答案 給乙個01矩陣,1代表是陸地,0代表海洋,如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。島嶼 相鄰陸地可以組成乙個島嶼 相鄰 上下左右 判斷島嶼個數。人傻了,調了半小時沒調出來。難倒是不難 其實就是dfs然後標記附近的島嶼,如果附近所有島嶼都...

牛客網刷題 島嶼數量

給乙個01矩陣,1代表是陸地,0代表海洋,如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。島嶼 相鄰陸地可以組成乙個島嶼 相鄰 上下左右 判斷島嶼個數。輸入 1,1,0,0,0 0,1,0,1,1 0,0,0,1,1 0,0,0,0,0 0,0,1,1,1 輸出 3遍歷陣列,將相...

牛客題霸 進製轉換

進製轉換的方法較為經典。對於乙個十進位制的是數,每次對m取模,然後除以m m為轉換後的進製 即可得到m進製數。因為m進製的數第一位時m 0m 0 m0,第二位時m 1m 1 m1,第三位m2 m 2 cdots m2 所以如果10進製的數n大於m km k mk k是最大的,即n 1 nn 1 則說...