题意:
统计“岛”的个数,相邻的“1”视为在同一个岛上。
思路:
DFS搜索在同一个岛上的1,将他们更新为水面。
代码如下:
int clear_i(char** grid, int i, int j, int gridRowSize, int gridColSize){
if(grid[i][j]=='1'){
grid[i][j]='0';
}
if(i-1>=0&&grid[i-1][j]=='1'){
clear_i(grid,i-1,j,gridRowSize,gridColSize);
}
if(j-1>=0&&grid[i][j-1]=='1'){
clear_i(grid,i,j-1,gridRowSize,gridColSize);
}
if(i+1<gridRowSize&&grid[i+1][j]=='1'){
clear_i(grid,i+1,j,gridRowSize,gridColSize);
}
if(j+1<gridColSize&&grid[i][j+1]=='1'){
clear_i(grid,i,j+1,gridRowSize,gridColSize);
}
return 0;
}
int numIslands(char** grid, int gridRowSize, int gridColSize) {
int i,j;
int count_i=0;
for(i=0;i<gridRowSize;++i){
for(j=0;j<gridColSize;++j){
if(grid[i][j]=='1'){
count_i++;
clear_i(grid,i,j,gridRowSize,gridColSize);
}
}
}
return count_i;
}