岛屿数量 200 DFS

题目:

给定'1's(土地)和'0's(水)的2d网格图,计算岛屿的数量。
岛被水包围,通过水平或垂直连接相邻的土地而形成。您可以假设网格的所有四个边都被水包围。

分析:

//截至条件:如何判定这是一个岛屿grid[i+1][j] == 0 && grid[i][j+1] == 0的时候
//确定这是一个岛屿,此时在存储岛屿数量的变量上加1

Code:

int numIslands(vector<vector<char>>&grid)
{
	int conCount = 0;
	for (int i = 0;i<grid.size();i++)
	{
		for (int j = 0;j>grid[0].size();j++)
		{
			if (grid[i][j] == '1')
			{
				conCount = dfs(grid, i, j);
			}
		}
	}

	return conCount;
}

int dfs(vector<vector<char>>&grid,int i,int j)
{
	if (i < 0 || i >grid.size()||j<0||j>grid[0].size()||grid[i][j] == '0')
	{
		return 0;
	}

	int areaCount = 0;
	grid[i][j] = '0';
	
	if (grid[i+1][j] == '0' && grid[i][j+1] == '0' && grid[i+1][j+1] == '1')
	{
		areaCount++;
	}

	return dfs(grid, i, j - 1) + dfs(grid, i - 1, j) + dfs(grid, i, j + 1) + dfs(grid, i + 1, j);
}

  //现在的情况是输出0;

//也就是在案例中没有出现

grid[i+1][j] == '0' && grid[i][j+1] == '0' && grid[i+1][j+1] == '1'的情况

猜你喜欢

转载自www.cnblogs.com/jihuabai/p/9925921.html