代码随想录训练营Day 66|卡码网101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿

06-23 377阅读

1.孤岛的总面积

101. 孤岛的总面积 | 代码随想录

代码随想录训练营Day 66|卡码网101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
(图片来源网络,侵删)

代码:(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 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]