給定乙個方格圖,求聯通塊的個數。
求聯通塊,並查集可做。
我們可以把所有相鄰的兩個是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 則說...