当前位置: 首页 > 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.jsqmd.com/news/144742/

相关文章:

  • 计算机毕设项目之基于Springboot vue的社区养老服务小程序
  • 基于HHO-KRR的多输入回归预测(哈里斯鹰优化核岭回归)附Matlab代码
  • 强化学习结合LSTM的量化交易策略奖励函数与入参关联
  • 【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
  • CSV大文件处理全流程:数据清洗、去重与格式标准化深度实践
  • 2026企业微信SCRM新趋势:AI如何助力客户转化率提升300%
  • ue python脚本 获取资产
  • 2025年12月江苏徐州变压器系列、智能变电站、新能源配套、高低压配电柜、智慧电力系统推荐榜单:顶尖企业综合评估 - 2025年品牌推荐榜
  • 杭州品牌策略公司概述
  • 【车辆控制】基于模型预测控制MPC的摩托车主动悬挂控制附Matlab代码
  • 使用 PMU(相量测量单元)进行电力系统状态估计【IEEE-14、IEEE30节点】(Matlab代码实现)
  • 学长亲荐8个AI论文工具,自考毕业论文格式规范必备!
  • 基于IWOA-GRNN的激光熔覆质量预测建模方法附Matlab代码
  • zz为什么样本方差无偏估计要除以n-1
  • 云舟观测报表管理功能:从业务到智能运维
  • 【论道】组件封装原则
  • NC verilog :force命令
  • 基于大数据的教育评价与研究成果的可视化分析系统(毕设源码+文档)
  • 天猫代运营TP是什么意思?
  • Catalan数
  • 024.二叉树层序遍历
  • 024.二叉树层序遍历
  • 2025年12月成都米粉/米线/绵阳米粉加工厂口碑榜单 - 2025年品牌推荐榜
  • Shopee店铺如何起一个好名字
  • Android 12 RK3588平台电源菜单深度定制指南
  • Spring HATEOAS 详细介绍
  • 2025年济南做得好的翅片管公司有哪些,乏风取热箱/表冷器/翅片管/新风机组/干冷器/空调机组/空气幕/冷却器/散热器翅片管企业哪家好 - 品牌推荐师
  • 基于大数据的精品小说推荐与可视化分析系统(毕设源码+文档)
  • 2025年12月江苏徐州别墅庭院设计、屋顶花园设计、公园绿地设计、市政广场设计、生态园区设计服务商权威测评与综合推荐 - 2025年品牌推荐榜
  • 【路径规划】基于RRT快速探索随机树算法在三维环境中寻找从起点到目标点的路径,并对路径进行平滑处理附Matlab代码