leetcode 岛屿问题

 

#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> grid;
int m, n;
int b[4][4] = {
	{-1,0},
	{0,1},
	{1,0},
	{0,-1}
};
class solution
{
	vector<vector<bool>> visit;
public:
	int test()
	{
		m = grid.size();
		n = grid[0].size();
		int count = 0;
		visit = vector<vector<bool>>(m, vector<bool>(n, false));
		for (int i = 0; i < m; i++)
			for (int j = 0; j < n; j++)
				if (!visit[i][j])
				{
					count++;
					dfs(i, j);
				}
	}
private:
	void dfs(int i, int j)
	{
		if (i<0 || i>m || j<0 || j>n||!grid[i][j])
			return;
		visit[i][j] = true;
		for (int i = 0; i < 4; i++)
		{
			int newx, newy;
			newx = i + b[i][0];
			newy = j + b[i][1];
			dfs(newx, newy);
		}
	}
}
发布了98 篇原创文章 · 获赞 1 · 访问量 4490

猜你喜欢

转载自blog.csdn.net/weixin_40823740/article/details/103344134