网站建设的ci设计指的是什么,营销型网站工程,seo教程从零开始,常用的网站有哪些岛屿数量
题目描述 链接:力扣#xff1a;200.岛屿数量 给你一个由 1#xff08;陆地#xff09;和 0#xff08;水#xff09;组成的的二维网格#xff0c;请你计算网格中岛屿的数量。
岛屿总是被水包围#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆…岛屿数量
题目描述 链接:力扣200.岛屿数量 给你一个由 1陆地和 0水组成的的二维网格请你计算网格中岛屿的数量。
岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。。 此外你可以假设。网格的四条边均被水包围。
思路染色法
遇到一个岛屿就将相邻的岛屿全部设置为0然后答案加1。
几个细节的处理
要先去判断当前的图格类型再去判断是否返回 否则遇到只有一个图格答案就是 0搜索时要注意先搜索左下角
代码
class Solution {
public:int m, n, res;int vx[4] {0, -1, 1, 0};int vy[4] {-1, 0, 0, 1};vectorvectorchar g;vectorvectorbool state;int numIslands(vectorvectorchar grid) {res 0;g grid;m grid.size();n grid[0].size();state.resize(m, vectorbool(n, false));dfs(0, 0, 1);return res;}inline void dfs(int x, int y, int u) {state[x][y] true;if (g[x][y] 1) {res 1;del(x, y);}if (u m*n) {return;}for (int i 0; i 4; i) {int nx x vx[i], ny y vy[i];if (nx 0 || ny 0 || nx m || ny n) {continue;}if (state[nx][ny] false) {dfs(nx, ny, u1);}}}inline void del(int x, int y) {g[x][y] 0;for (int i 0; i 4; i) {int nx x vx[i], ny y vy[i];if (nx 0 || ny 0 || nx m || ny n) {continue;}if (g[nx][ny] 1) {del(nx, ny);}}return;}
};