/**
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
//Floorfill算法,用BFS去淹掉陆地,这样就可以避免额外的visited数组
//可以不走回头路
func solve( grid [][]byte ) int {
m := len(grid)
n := len(grid[0])
res := 0
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if grid[i][j] == '1' {
res++
dfs(grid, i, j)
}
}
}
return res
}
func dfs(grid [][]byte, i, j int) {
m := len(grid)
n := len(grid[0])
//处理超出边界的情况
if i < 0 || j < 0 || j >= n || i >= m {
return
}
if grid[i][j] == '0' {
return
}
//如果是陆地,就把它淹掉
grid[i][j] = '0'
//上下左右4个方向
dfs(grid, i-1, j)
dfs(grid, i+1, j)
dfs(grid, i, j-1)
dfs(grid, i, j+1)
}