岛屿的个数
如题:
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
##C#代码如下
public class Solution {
public int NumIslands(char[,] grid)
{
bool [,] visited=new bool[grid.GetLength(0),grid.GetLength(1)];
int res=0;
for (int i=0;i<grid.GetLength(0);i++)
{
for (int j=0;j<grid.GetLength(1);j++)
{
if (grid[i,j]=='1' && !visited[i,j])
{
DFS(grid,visited,i,j);
res++;
}
}
}
return res;
}
public void DFS(char[,] grid,bool[,] visited,int i ,int j )
{
if (i<0 ||i>=grid.GetLength(0))return;
if (j<0 ||j>=grid.GetLength(1))return;
if (grid[i,j]!='1' || visited[i,j])return;
visited[i,j]=true;
DFS(grid,visited,i+1,j);
DFS(grid,visited,i-1,j);
DFS(grid,visited,i,j+1);
DFS(grid,visited,i,j-1);
}
}