当前位置: 首页 > news >正文

Day51_图论2.md

岛屿数量

问题描述

给定一个由“0”代表水和“1”代表陆地的二维网格,计算网格中岛屿的数量。

DFS实现

# include<iostream>
# include<vector>
using namespace std;
int dir[4][2]={0,1,1,0,-1,0,0,-1};
void dfs(const vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){//if(visited[x][y]||grid[x][y]==0) return;visited[x][y]=true;for(int i=0;i<=4;i++){int nextx =x+dir[i][0];int nexty =y+dir[i][1];if(nextx<0||nextx>=grid.size()||nexty<0||nexty>=grid[0].size()) continue;//if(!visited[nextx][nexty]&& grid[nextx][nexty]==1){dfs(grid,visited,nextx,nexty);//}}
}
int main(){int n,m;cin>>n>>m;vector<vector<int>> grid(n,vector<int>(m,0));for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>grid[i][j];}}vector<vector<bool>> visited(n,vector<bool>(m,false));int result =0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!visited[i][j]&&grid[i][j]==1){result++;dfs(grid,visited,i,j);}}}cout<<result<<endl;
}

BFS实现

通过队列遍历上下左右四个方向,如果是个岛屿,就放入队列并标记用过。如果队列还没有空,就弹出队头元素遍历其上下左右四个方向。

# include<iostream>
# include<queue>
# include<vector>
using namespace std;
int dir[4][2]={0,1,1,0,-1,0,0,-1};
void bfs(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){queue <pair<int,int>> que;que.push({x,y});visited[x][y]=true;while(!que.empty()){pair<int,int> cur = que.front();que.pop();int curx=cur.first;int cury=cur.second;for(int i=0;i<4;i++){int nextx =curx+dir[i][0];int nexty =cury+dir[i][1];if(nextx<0||nextx>=grid.size()||nexty<0||nexty>=grid[0].size()) continue;if(!visited[nextx][nexty]&& grid[nextx][nexty]=='1'){ que.push({nextx,nexty});visited[nextx][nexty]==true;}}}
}
int main(){int n,m;cin>>n>>m;vector<vector<int>> grid(n,vector<int>(m,0));for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>grid[i][j];}}vector<vector<bool>> visited(n,vector<bool>(m,false));int result =0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!visited[i][j]&&grid[i][j]==1){result++;bfs(grid,visited,i,j);}}}cout<<result<<endl;
}

岛屿的最大面积

DFS实现

https://kamacoder.com/problempage.php?pid=1172
http://www.gsyq.cn/news/159171.html

相关文章:

  • 区间 LCS/LIS
  • 基于HHO-KRR的多输入回归预测(哈里斯鹰优化核岭回归)附Matlab代码
  • 【电力系统】基于节点导纳矩阵运算的电力系统全环节碳流追踪算法研究(Matlab代码实现)
  • 提示词工程师(Prompt Engineer) 是一个随着大语言模型(如GPT系列)兴起而快速走红的新兴职业
  • xmake自定义规则,删除编译dll时生成的.a文件
  • ue python脚本 获取资产
  • 【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
  • 杭州品牌策略公司概述
  • 使用 PMU(相量测量单元)进行电力系统状态估计【IEEE-14、IEEE30节点】(Matlab代码实现)
  • Catalan数
  • Spring HATEOAS 详细介绍
  • LuatOS下载不求人:完整流程与高频问题应对策略
  • 024.二叉树层序遍历
  • mybatis insert后返回id
  • Java面试:为何必须在循环中检查等待条件?避坑指南!
  • Android 12 RK3588平台电源菜单深度定制指南
  • 千万不能忽视!选择口碑好的实验室净化机构有多重要
  • 实验室净化?选这家供应商就对了
  • 2025年12月江苏徐州变压器系列、智能变电站、新能源配套、高低压配电柜、智慧电力系统推荐榜单:顶尖企业综合评估 - 2025年品牌推荐榜
  • comsol悬浮绝缘子电场计算模型,可以得到绝缘子各个部位电势及电场分布,提供comsol详细...
  • !AI领域火爆!求职人数激增33.4%,AI工程师月薪高达3.5万元,你还在等什么?
  • 2025年封切收缩机厂家实力推荐:套袋机/包装机/码垛机源头厂家精选 - 品牌推荐官
  • 凌晨兩點的覺悟:當AttributeError成為我擁抱Type Hints的轉折點
  • 2025年12月金属熔剂/合金金属熔剂/金属添加剂/厂家综合评测 - 2025年品牌推荐榜
  • ModelEngine的Nexent智能体【娱乐生涯 AI 助手】落地实施测试——看看你35岁能否成为天王巨星
  • 2025年12月成都米粉/米线/绵阳米粉加工厂口碑榜单 - 2025年品牌推荐榜
  • 基于Spring Boot和Vue.js的视频点播管理系统设计与实现
  • 运用 Python 将 Markdown 转换为 Word、HTML、PDF、PNG 和 JPG
  • CF1295F Good Contest/[APIO2016] 划艇
  • 2025最新!自考党必看9个AI论文平台测评与推荐