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

代码随想录训练营day51|图论part2

岛屿数量

卡码网题目链接

#include <bits/stdc++.h>
using namespace std;int dir[4][2] = {0,-1,0,1,1,0,-1,0};void dfs(vector<vector<int>> &board, vector<vector<bool>> &visted, int x, int y){for(int i = 0; i < 4; i++){int nx = x + dir[i][0];int ny = y + dir[i][1];if(nx >= board.size() || nx < 0 || ny >= board[0].size() || ny < 0 || board[nx][ny] == 0 || visted[nx][ny])continue;// board[nx][ny] = 0;visted[nx][ny] = true;dfs(board, visted, nx, ny);}
}void bfs(vector<vector<int>> &board, vector<vector<bool>> &visted, int x, int y){queue<pair<int, int>> que;que.push({x, y});while(!que.empty()){pair<int, int> s = que.front();que.pop();for(int i = 0; i < 4; i++){int nx = s.first + dir[i][0];int ny = s.second + dir[i][1];if(nx >= board.size() || nx < 0 || ny >= board[0].size() || ny < 0 || board[nx][ny] == 0 || visted[nx][ny])continue;visted[nx][ny] = true;que.push({nx, ny});}}}int main()
{int n, m;cin >> n >> m;vector<vector<int>> board(n, vector<int>(m));vector<vector<bool>> visted(n, vector<bool>(m, false));for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){cin >> board[i][j];}}int result = 0;for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(board[i][j] == 1 && !visted[i][j]){result++;visted[i][j] = true;// dfs(board, visted, i, j);bfs(board, visted, i, j);}}}cout << result << endl;
}

深搜

int dir[4][2] = {0,-1,0,1,1,0,-1,0};
void dfs(vector<vector<int>> &board, vector<vector<bool>> &visted, int x, int y){for(int i = 0; i < 4; i++){int nx = x + dir[i][0];int ny = y + dir[i][1];if(nx >= board.size() || nx < 0 || ny >= board[0].size() || ny < 0 || board[nx][ny] == 0 || visted[nx][ny])continue;// board[nx][ny] = 0;visted[nx][ny] = true;dfs(board, visted, nx, ny);}
}

广搜

int dir[4][2] = {0,-1,0,1,1,0,-1,0};
void bfs(vector<vector<int>> &board, vector<vector<bool>> &visted, int x, int y){queue<pair<int, int>> que;que.push({x, y});while(!que.empty()){pair<int, int> s = que.front();que.pop();for(int i = 0; i < 4; i++){int nx = s.first + dir[i][0];int ny = s.second + dir[i][1];if(nx >= board.size() || nx < 0 || ny >= board[0].size() || ny < 0 || board[nx][ny] == 0 || visted[nx][ny])continue;visted[nx][ny] = true;que.push({nx, ny});}}
}

岛屿的最大面积

卡码网题目链接(ACM模式)

#include <bits/stdc++.h>
using namespace std;int result;
int dir[4][2] = {0,-1,0,1,1,0,-1,0};
void bfs(vector<vector<int>> &board, vector<vector<bool>> &visted, int x, int y){queue<pair<int, int>> que;que.push({x, y});int sum = 1;while(!que.empty()){pair<int, int> s = que.front();que.pop();for(int i = 0; i < 4; i++){int nx = s.first + dir[i][0];int ny = s.second + dir[i][1];if(nx >= board.size() || nx < 0 || ny >= board[0].size() || ny < 0 || board[nx][ny] == 0 || visted[nx][ny])continue;sum++;visted[nx][ny] = true;que.push({nx, ny});}}result = max(sum, result);
}int main()
{int n, m;cin >> n >> m;vector<vector<int>> board(n, vector<int>(m));vector<vector<bool>> visted(n, vector<bool>(m, false));for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){cin >> board[i][j];}}result = 0;for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(board[i][j] == 1 && !visted[i][j]){visted[i][j] = true;// result++;bfs(board, visted, i, j);}}}cout << result;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【React+Ts+Vite+AntDesign】从0到1基础项目搭建(动态路由)
  • 性能测试经典案例解析——远程培训系统
  • 傅里叶变换家族
  • Oracle Enterprise Manager:Oracle数据库管理的高效工具
  • 三菱机器人手柄维修示教器维修手操器面板等
  • 【Kubernetes知识点问答题】监控与升级 / ETCD 备份与恢复
  • df.write.csv
  • RK3399 android7.1 话柄电话功能
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3 深度学习详解 -2 机器学习框架攻略
  • 探索 Logrus 日志框架:Go 语言的强大日志工具
  • 【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题
  • 提高开发效率的实用工具库VueUse
  • OPenCV结构分析与形状描述符(4)计算一个旋转矩形的四个顶点的函数boxPoints()的使用
  • 实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!
  • 11.2.软件系统分析与设计-数据库分析与设计
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • co模块的前端实现
  • Redis学习笔记 - pipline(流水线、管道)
  • Redux系列x:源码分析
  • Vue--数据传输
  • 从零开始在ubuntu上搭建node开发环境
  • 仿天猫超市收藏抛物线动画工具库
  • 简单基于spring的redis配置(单机和集群模式)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 数据仓库的几种建模方法
  • -- 数据结构 顺序表 --Java
  • 找一份好的前端工作,起点很重要
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #define,static,const,三种常量的区别
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #知识分享#笔记#学习方法
  • $.ajax()方法详解
  • (13)Hive调优——动态分区导致的小文件问题
  • (4)logging(日志模块)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (js)循环条件满足时终止循环
  • (二)c52学习之旅-简单了解单片机
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (数据结构)顺序表的定义
  • (转)jdk与jre的区别
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ******之网络***——物理***
  • *2 echo、printf、mkdir命令的应用
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 6 redis操作类
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • /dev下添加设备节点的方法步骤(通过device_create)