一道模板题,与岛屿数量-卡玛相同
class Solution {
private:
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
int ans = 0;
public:
void dfs(vector<vector<char>>& grid, vector<vector<char>>& visited, int x, int y){
for(int i = 0; i < 4; i++){
int newx = x + dir[i][0];
int newy = y + dir[i][1];
if(newx < 0 || newx >= grid.size() || newy < 0 || newy >= grid[0].size()) continue;
if(visited[newx][newy] != '1' && grid[newx][newy] == '1'){
visited[newx][newy] = '1';
dfs(grid, visited, newx, newy);
}
}
}
int numIslands(vector<vector<char>>& grid) {
vector<vector<char>> visited(grid.size(), vector<char>(grid[0].size(), '0'));
for(int i = 0; i < grid.size(); i++){
for(int j = 0; j < grid[0].size(); j++){
if(visited[i][j] != '1' && grid[i][j] == '1'){
visited[i][j] = '1';
dfs(grid, visited, i, j);
ans++;
}
}
}
return ans;
}
};