求海岸线-dfs

小莱获得了大奖:CM世界中一片 n × m n \times m n×m 的海域的使用权!这片海域可以看成 n × m n \times m n×m 的格子。其中每个格子要么是海,要么是岛屿,相邻的岛屿可以相互构成一片大的岛屿(相邻是指上下左右相连,斜着相连不算)。小莱现在想知道,他的这片海域中,所有的岛屿的海岸线有多长呢?

小莱获得了大奖:CM世界中一片 n × m n \times m n×m 的海域的使用权!这片海域可以看成 n × m n \times m n×m 的格子。其中每个格子要么是海,要么是岛屿,相邻的岛屿可以相互构成一片大的岛屿(相邻是指上下左右相连,斜着相连不算)。小莱现在想知道,他的这片海域中,所有的岛屿的海岸线有多长呢?

注意:岛中岛不算海岸线。

分析

首先如果岛屿能通过这条边走到边界,则这条边为海岸线,所以我们可以将能到边界的所有点求出来,如果这个点的上、下、左、右有 1 1 1,则他的上、下、左、右是 1 1 1 的点就为海岸线。

代码

#include <bits/stdc++.h>using namespace std;const int N = 1005;
int n, m, vis[N][N], a[N][N];
int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0};void dfs(int x, int y){vis[x][y] = true;for(int i = 0; i < 4; i ++){int nx = x + dx[i], ny = y + dy[i];if(nx >= 0 && nx <= n + 1 && ny >= 0 && ny <= m + 1 && !vis[nx][ny] && !a[nx][ny]){dfs(nx, ny);}}
} int main(){cin >> n >> m;for(int i = 1; i <= n; i ++){for(int j = 1; j <= m; j ++){cin >> a[i][j];}}dfs(0, 0);int ans = 0;for(int i = 0; i <= n + 1; i ++){for(int j = 0; j <= m + 1; j ++){if(vis[i][j]){for(int k = 0; k < 4; k ++){int nx = i + dx[k], ny = j + dy[k];if(nx >= 0 && nx <= n + 1 && ny >= 0 && ny <= m + 1 && a[nx][ny] == 1){ans ++;}}				}}}cout << ans;return 0;
}

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

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

相关文章

添加一个编辑的小功能(PHP的Laravel)

一个编辑的按钮可以弹出会话框修改断更天数 前台 加一个编辑按钮的样式&#xff0c;他的名字是固定好的 之前有人封装过直接用就好&#xff0c;但是一定放在class里面&#xff0c;不要放在id里面 看见不认识的方法一定要去看里面封装的是什么 之前就是没有看&#xff0c;所以…

CSS学习之-02

position&#xff1a;该属性指定了元素的定位类型 static&#xff1a;默认值&#xff0c;即没有定位&#xff0c;准寻正常的文档流对象&#xff0c;该定位不会受到top、bottom、left、right影响。 fixed&#xff1a;元素的位置相对于浏览器窗口是固定的&#xff0c;即使窗口滚…

吴恩达DeepLearning 2023学习目录

课程链接&#xff1a;https://space.bilibili.com/253734135/channel/collectiondetail?sid2022897 笔记下载&#xff1a;https://github.com/QueenJuliaZxx/deeplearning_ai_books L1 神经网络和深度学习 第一周 深度学习概论&#xff1a; 学习驱动神经网络兴起的主要技术趋…

如果PostgreSQL有两层nginx代理,会发生什么事?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 1. 前言 PostgreSQL默认只能本机连接&#xff0c;若要在别的客户端远程连接pgsql&#xff0c;则需要修改配置文件pg_hba.conf&a…

Flutter中的StatelessWidget和StatefulWidget简介与使用

Flutter是一款流行的跨平台移动应用开发框架&#xff0c;它使用Dart语言编写。在Flutter中&#xff0c;StatelessWidget和StatefulWidget是两个重要的概念&#xff0c;用于构建用户界面。 1. StatelessWidget 什么是StatelessWidget&#xff1f; StatelessWidget是Flutter中…

如何将ElementUI组件库中的时间控件迁移到帆软报表中

需求:需要将ElementUI组件库中的时间控件迁移到帆软报表中,具体为普通报表的参数面板中,填报报表的组件中,决策报表的组件与参数面板中。 这三个场景中分别需要用到帆软报表二开平台的ParameterWidgetOptionProvider,FormWidgetOptionProvider,CellWidgetOptionProvider开…

无心剑小诗《银婚颂》

银婚颂 二十五个春秋共一轮 你是岁月赠予我最亮的星辰 从青春燃烧到岁月沉稳 你的笑颜,我永恒的晨昏 春花烂漫是你眼里的璀璨 夏日蝉鸣是彼此故事的和弦 秋叶纷飞诉说漫天情缘 冬雪纯洁见证温暖的牵绊 月光洒满每段共享小径 星光点染每个深情的夜晚 风雨同舟铸就铜墙铁壁 携…

书生·浦语大模型实战1

书生浦语大模型全链路开源体系 视频链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 大模型之所以能收到这么高的关注度&#xff0c;一个重要原因是大模型是发展通用人工智能的重要途径 深度信念网络&#xff1a; &#xff08;1&#xff09;又被称为贝叶斯网…

科技助力教育:数字化如何改变家校社协同育人?

近年来,随着社会的快速发展,教育的责任已不再仅局限于学校。家庭、学校和社会协同育人理念,正成为促进教育高质量发展的关键要素。 2023年初,教育部等十三部门联合印发《关于健全学校家庭社会协同育人机制的意见》,提出到“十四五”时期末,形成更加完善的由“学校积极主导、家…

Elasticsearch零基础实战

分享后可优化点&#xff08;待完成&#xff09; java es8 查询如何打印查询入参 &#xff1f;&#xff08;直接执行的json&#xff09; es自定义分词器 如何实现&#xff1f; kibana 监控jvm分子分母是什么 &#xff1f; es如何 改索引结构&#xff1f; 修改数据原理 分享…

【动态规划】C++算法:115.不同的子序列

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode115 不同的子序列 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 示例 1&#xff1a; 输入&#xff1a;s “rab…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存&#xff08;CustomData&#xff09;功能&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的数据保存&#xff08;CustomData&#xff09;功能的技术背景CameraExplorer如何使用图像剪切&#xff0…

服务器执行rm命令时自动记录到审计日志中

目的 当在服务器上执行类似于 rm 命令时&#xff0c;自动记录该命令执行的时间&#xff0c;在哪里执行的&#xff0c;删除的什么文件&#xff0c;记录到审计日志中&#xff0c;能够查找到某些文件丢失原因 配置 # 需要root权限&#xff0c;sudo不行&#xff0c;这里假设执行…

VUE3结合mqtt解决多页面使用需重复连接等问题(封装)

场景 在做的一个项目中多个页面都需要使用到mqtt接收消息&#xff0c;但这样的话每个页面就都需要连接一次mqtt&#xff0c;并且要再次配置options信息、订阅主题、接收消息&#xff0c;非常的不方便&#xff0c;因此琢磨将mqtt封装到vuex中&#xff0c;使其可以多页面通用&am…

工具网站DefiLlama全攻略:从零学习链上数据使用与发现

DefiLlama 是一个 DeFi(去中心化金融)信息聚合器,其主要功能是提供各种 DeFi 平台的准确、全面数据。DefiLlama 致力于在不受广告或赞助内容影响的情况下为用户提供这些数据,以确保信息内容的透明度和公正性,该平台聚合来自多个区块链的数据,让用户能够全面了解 DeFi 格局…

探索Elasticsearch内存应用的关键因素

了解Elasticsearch内存模型 Elasticsearch的内存使用主要包括堆内存和操作系统缓存。堆内存是Elasticsearch用来存储数据结构的内存&#xff0c;例如文档索引、倒排索引等。操作系统缓存则是Elasticsearch缓存磁盘上的数据块以加速读取操作的一种机制&#xff0c;通常被称为OS…

docker安装-在linux下的安装步骤

#切换到root用户 su yum安装jcc相关 yum -y install gcc yum -y install gcc-c 安装yum-utils sudo yum install -y yum-utils 设置stable镜像仓库 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更新yum软件包索…

conda操作使用教程

一 conda介绍 Conda 是一个开源的包管理系统和环境管理系统&#xff0c;用于在 Linux、Windows 和 macOS 上管理 Python 包和依赖项&#xff0c;java有maven, python有conda,它是python开发者的最爱。 Conda 的核心功能&#xff1a; 包管理&#xff1a;安装、更新、删除 Pytho…

【PHP】json_decode的第二个参数是什么意思

json_decode() 函数的第二个参数 $associative 是一个布尔值&#xff0c;用于控制 JSON 对象在 PHP 中的解码方式。当将其设置为 true 时&#xff0c;JSON 对象将被解码为关联数组&#xff1b;当设置为 false 时&#xff0c;JSON 对象将被解码为 stdClass 对象。默认值为 false…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…