DFS与BFS专题

news/2025/1/9 13:33:55/文章来源:https://www.cnblogs.com/Tshaxz/p/18661983

99. 岛屿数量

image

讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路
DFS代码

#include <iostream>
#include <cstring>using namespace std;const int N = 55;int n, m;
int g[N][N];
bool st[N][N];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};void dfs(int sx, int sy)
{for (int i = 0; i < 4; i++){int a = sx + dx[i], b = sy + dy[i];if (a < 0 || a >= n || b < 0 || b >= m) continue;if (st[a][b] || g[a][b] == 0) continue;st[a][b] = true;dfs(a, b);}
}int main()
{cin >> n >> m;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> g[i][j];int res = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (!st[i][j] && g[i][j] == 1){st[i][j] = true;res++;dfs(i, j);}}}cout << res << endl;return 0;
}

BFS代码

#include <iostream>
#include <cstring>
#include <queue>using namespace std;typedef pair<int, int> PII;const int N = 55;int n, m;
int g[N][N];
bool st[N][N];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};void bfs(int sx, int sy)
{queue<PII> q;q.push({sx, sy});st[sx][sy] = true;while (q.size()){PII t = q.front();q.pop();for (int i = 0; i < 4; i++){int a = t.first + dx[i], b = t.second + dy[i];if (a < 0 || a >= n || b < 0 || b >= m) continue;if (st[a][b] || g[a][b] == 0) continue;q.push({a, b});st[a][b] = true;}}
}int main()
{cin >> n >> m;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> g[i][j];int res = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (!st[i][j] && g[i][j] == 1){res++;bfs(i, j);}}}cout << res << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866531.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spinnaker

Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。 Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。 Spinnaker 组件:Spinnaker 最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交…

Java基础学习(五)

Java基础学习(五):数组 目录Java基础学习(五):数组概念声明与创建初始化基本特点内存分析应用多维数组扩展内容Arrays 类冒泡排序稀疏数组 本文为个人学习记录,内容学习自 狂神说Java概念数组是相同类型数据的有序集合 每个数据称为一个数组元素,可以通过下标来访问声明…

CDS标准视图:付款锁定原因 I_PaymentBlockingReason

视图名称:付款锁定原因 I_PaymentBlockingReason 视图类型:基础视图 视图代码:点击查看代码 //Documentation about annotations can be found at http://help.sap.com searching for CDS annotations //Inserted by VDM CDS Suite Plugin @ObjectModel.usageType.sizeCateg…

欧拉OpenEuler使用nfs和rsync复制文件夹到新服务器.250109

案例: 服务器A是新服务器 服务器B为老服务器 需要将服务器B的/data/storage ,拷贝到服务器A的 /home/sync-data下一、服务器A 新服务器配置nfs 1. 安装nfs systemctl stop firewalld df -h mkdir -p /home/sync-datayum install nfs-utils systemctl status nfs-se…

在 .NET 9 中使用 Scalar 替代 Swagger

前言 在.NET 9发布以后ASP.NET Core官方团队发布公告已经将Swashbuckle.AspNetCore(一个为ASP.NET Core API提供Swagger工具的项目)从ASP.NET Core Web API模板中移除,这意味着以后我们创建Web API项目的时候不会再自动生成Swagger API文档了。那么今天咱们一起来试试把我们…

第九章 范围管理 (2025年详细解析版)

目录什么是范围管理?9.1 管理基础9.1.1 产品范围和项目范围9.1.2 产品范围和项目范围管理新实践9.2 项目范围管理过程9.2.1 过程概述9.2.2 项目范围管理过程9.2.3 裁剪考虑因素(了解)9.2.4 敏捷与适应方法总结9.3 规划范围管理1. 课程目标2. 过程定义:规划范围管…

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求

一、前言说明 这几个功能是近期定制的功能,也非常具有代表性,核心就是之前登录和设备信息都是在本地,存放在数据库中,数据库可以是本地或者远程的,现在需要改成通过网络API请求的方式,现在很多的服务器很强大,都提供了各种API接口,包括登录和拉取回放等,相当于直接对接…

debian10测试

https://help.aliyun.com/zh/ecs/user-guide/change-debian-9-or-10-repository-addresses?spm=a2c4g.11186623.0.0.52c44bccrP9uFq

C-V2X测试探秘系列之:电磁兼容试验方法

在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参…

qwrt 旧版配置 fm350 教程

qwrt 旧版配置 fm350 教程网络-接口,左下角新建接口​ 选择协议-FM350 蜂窝网络​ 防火墙修改到 wan​ 如果需要查看信息​本文来自博客园,作者:铁流是宝宝,转载请注明原文链接:https://www.cnblogs.com/dawnings/p/18661915/qwrt-old-version-configuration-fm350-tutori…

普通的maven项目将main函数打包实现java -jar来运行

一、创建一个maven项目 假设groupId为org.example 则在src\main\java目录下创建一个org包,在其下创建一个example包,然后创建我们打包后要执行java类MyThread.java 二、在pom文件中添加以下build插件声明 在<project>标签内添加 <build> <plugins> …

前端实践-hexo博客

一.简单准备 1.准备工具:npm,nvm,node,git bash 2.全局安装hexo npm install -g hexo-cli hexo # -g 为全局安装 3.新建一个文件夹用于存放博客,例如blog, cd文件夹右键在此处gitbash执行(下面命令行均是gitbash执行)hexo init 执行npm install下载依赖 4.现在执行hex…