题解 | #岛屿数量#
岛屿数量
http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
找到'1'的地方 然后判断其上下左右是不是为'1'(岛屿)
class Solution {
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
void dfs(vector<vector<char> >& grid,int i,int j,int m,int n){
grid[i][j]=0; // 减枝
// 判断上下左右是否为1
if(i<m-1 && grid[i+1][j]=='1') dfs(grid,i+1,j,m,n);
if(i>0 && grid[i-1][j]=='1') dfs(grid,i-1,j,m,n);
if(j<n-1 && grid[i][j+1]=='1') dfs(grid,i,j+1,m,n);
if(j>0 && grid[i][j-1]=='1') dfs(grid,i,j-1,m,n);
}
int solve(vector<vector<char> >& grid) {
// write code here
// dfs 深度搜索
int result=0;
int m = grid.size();
if(m<=0) return 0;
int n = grid[0].size();
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
if(grid[i][j]=='1'){
result++;
dfs(grid,i,j,m,n); // 深度搜索
}
}
}
return result;
}
};