代码随想录训练营Day 66|卡码网101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
1.孤岛的总面积
101. 孤岛的总面积 | 代码随想录
(图片来源网络,侵删)
代码:(bfs广搜)
#include #include #include using namespace std; int dir[4][2] = {1,0,0,1,-1,0,0,-1}; int count; void bfs(vector&grid,int x,int y){ queue que; que.push({x,y}); grid[x][y] = 0; // 这里用grid的元素变为0来进行标记 count++; while(!que.empty()){ pair cur = que.front(); que.pop(); int curx = cur.first; int cury = cur.second; for(int i = 0; i = grid.size()||nexty = grid[0].size()){ continue; } if(grid[nextx][nexty] == 1){ que.push({nextx,nexty}); grid[nextx][nexty] = 0; count++; } } } } int main(){ // 输入 int n,m; cin >> n >> m; vector grid(n,vector(m,0)); for(int i = 0; i > grid[i][j]; } } // 处理 for(int i = 0; i > n >> m; vector grid(n,vector(m,0)); for(int i = 0; i > grid[i][j]; } } // 处理 for(int i = 0; i > n >> m; vector grid(n,vector(m,0)); for(int i = 0; i > grid[i][j]; } } // 处理 // 将临近陆地的标为2 和 孤岛区分开 vector visited(n,vector(m,false)); for(int i = 0; i n >> m; vector grid(n,vector(m,0)); for(int i = 0; i > grid[i][j]; } } // 处理 vector firstBorder(n,vector(m,false)); vector secondBorder(n,vector(m,false)); for(int i = 0; i n >> m; vector grid(n,vector(m,0)); for(int i = 0; i > grid[i][j]; } } // 处理 vector visited(n,vector(m,false)); unordered_map gridNum; int mark = 2; // 记录岛屿的编号 bool isAllGrid = true; // 记录整个地图是否都是陆地(如果是,就没法添加陆地了) for(int i = 0; i
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。