连通子图的个数,dfs求解,貌似bfs的效率更高,下次实现
public class Solution {
int[][] tmp;
int ret=0;
public int numIslands(char[][] grid) {
ret=0;
int h = grid.length;
if(h==0)
{
return ret;
}
int w = grid[0].length;
tmp = new int[h][w];
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
tmp[i][j]=0;
}
}
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
if(grid[i][j]=='1'&&tmp[i][j]==0)
{
ret++;
fun(i,j,h,w,grid);
}
}
}
return ret;
}
void fun(int i,int j,int h,int w,char[][] grid)
{
tmp[i][j]=1;
if(i<h-1&&grid[i+1][j]=='1'&&tmp[i+1][j]==0)
{
fun(i+1,j,h,w,grid);
}
if(i>0&&grid[i-1][j]=='1'&&tmp[i-1][j]==0)
{
fun(i-1,j,h,w,grid);
}
if(j<w-1&&grid[i][j+1]=='1'&&tmp[i][j+1]==0)
{
fun(i,j+1,h,w,grid);
}
if(j>0&&grid[i][j-1]=='1'&&tmp[i][j-1]==0)
{
fun(i,j-1,h,w,grid);
}
}
}