用一个二维数组代表一张地图,这张地图由字符"0"与字符"1"组成,其中"0"代表水域,"1"代表小岛土地,小岛"1"被水"0"所包围,当小岛土地"1"在水平和垂直方向相连接时,认为是同一块土地。求这张地图中小岛的数量。
宽搜法
#include<vector>
#include<string>
#include<queue>
class Solution
{
public:
Solution() {
};
~Solution() {
}
int numIsland(std::vector<std::vector<char>>& grid)
{
int island_number = 0;
std::vector<std::vector<int>> mark;
for (int i = 0; i < grid.size(); i++)
{
mark.push_back(std::vector<int>());
for (int j = 0; j < grid[i].size(); j++)
{
mark[i].push_back(0);
}
}
for (int i = 0; i < grid.size(); i++)
{
for (int j = 0; j < grid[i].size(); j++)
{
if (mark[i][j] == 0 && grid[i][j] == '1')
{
BFS(mark, grid, i, j);
island_number++;
}
}
}
return island_number;
}
private