leetcode -200. 岛屿数量
题目:
代码:
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<vector<char> >& grid, int r, int c){
int row = grid.size();
int col = grid[0].size();
grid[r][c] = '0';
if(r - 1 >=0 && grid[r-1][c] == '1'){
dfs(grid, r - 1, c);
}
if(r + 1 < row && grid[r+1][c] == '1'){
dfs(grid, r + 1, c);
}
if(c - 1 >=0 && grid[r][c-1] == '1'){
dfs(grid, r, c - 1);
}
if(c + 1 < col && grid[r][c+1] == '1'){
dfs(grid, r, c+1);
}
}
int numIslands(vector<vector<char> >& grid) {
int row = grid.size();
if(row == 0){
return 0;
}
int col = grid[0].size();
int nums = 0;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(grid[i][j] == '1'){
nums++;
dfs(grid, i, j);
}
}
}
return nums;
}
int main(){
int res;
vector<vector<char> > grid;
int m, n;
cin>>m>>n;
int g;
for(int i = 0; i < m; i++){
grid.push_back(vector<char>());
for(int j = 0; j < n; j++){
cin>>g;
grid[i].push_back(g);
}
}
res = numIslands(grid);
cout<<res;
return 0;
}