/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 判断岛屿数量
* @param grid char字符型二维数组
* @param gridRowLen int grid数组行数
* @param gridColLen int* grid数组列数
* @return int整型
*/
void iszero(char** a,int i,int j,int row,int col){
if(i>0&&a[i-1][j]=='1'){ //上边
a[i-1][j]='0';iszero(a, i-1, j, row, col);
}
if(i<row-1&&a[i+1][j]=='1'){ //下边
a[i+1][j]='0';iszero(a, i+1, j, row, col);
}
if(j<col-1&&a[i][j+1]=='1'){ //右边
a[i][j+1]='0';iszero(a, i, j+1, row, col);
}
if(j>0&&a[i][j-1]=='1'){
a[i][j-1]='0';iszero(a, i, j-1, row, col); //左边
}
}
int solve(char** grid, int gridRowLen, int* gridColLen ) {
// write code here
int i=0,j=0;
int num=0;
for(i=0;i<gridRowLen;i++){
for(j=0;j<*gridColLen;j++){
if(grid[i][j]=='1'){ //这个是‘1’,
grid[i][j]='0'; //这步可以不用,因为向后循环检验,不会再检查这个
iszero(grid, i, j, gridRowLen,*gridColLen); //邻近的上下左右全都查查,并且都置为‘0’
num++; //就相当于,小岛的n块土地都浓缩到这一块,iszero就是浓缩的过程。计数一次
}
}
}
return num;
}