今日学习总结

复习了dfs的相关内容,完成了一道dfs相关的题目。

P2371挑战算周长

#include <stdio.h>
// 定义一个二维字符数组 map 用于存储地图信息,大小为 25x25
char map[25][25];
// 定义一个常量二维数组 d 作为方向增量数组,用于表示 8 个不同的方向
// 前 4 个方向是上下左右,后 4 个方向是斜向
const int d[8][2]={{0,1},{1,0},{0,-1},{-1,0},{-1,-1},{-1,1},{1,-1},{1,1}};
// 定义变量 ans 用于存储最终计算得到的周长
int ans;
// 定义变量 n 和 m 分别表示地图的行数和列数
// 变量 x 和 y 表示起始点的坐标
int n,m,x,y;// 深度优先搜索函数,参数 x 和 y 表示当前搜索的点的坐标
void dfs(int x,int y){// 如果当前点超出地图边界(x 小于 1 或大于 n,y 小于 1 或大于 m)// 或者当前点是 '.'(表示空地)if(x<1||x>n||y<1||y>m||map[x][y]=='.'){// 说明该点是连通区域的边界,周长加 1ans++;// 结束当前递归调用return;}// 如果当前点已经被标记为 ' '(表示已访问)if(map[x][y]==' '){// 结束当前递归调用return;}// 定义变量 nx 和 ny 用于存储下一个要搜索的点的坐标int nx,ny;// 将当前点标记为 ' ',表示已访问map[x][y]=' ';// 遍历前 4 个方向(上下左右)for(int i=0;i<4;i++){// 计算下一个点的 x 坐标nx=x+d[i][0];// 计算下一个点的 y 坐标ny=y+d[i][1];// 递归调用 dfs 函数,继续搜索下一个点dfs(nx,ny);}// 遍历后 4 个方向(斜向)for(int i=4;i<8;i++){// 计算下一个点的 x 坐标nx=x+d[i][0];// 计算下一个点的 y 坐标ny=y+d[i][1];// 如果下一个点超出地图边界if(nx<1||ny<1||nx>n||ny>m){// 跳过当前方向,继续下一个方向的遍历continue;}// 如果下一个点是 'X'(表示属于连通区域)if(map[nx][ny]=='X'){// 递归调用 dfs 函数,继续搜索下一个点dfs(nx,ny);}}
}// 主函数,程序的入口点
int main(){// 从标准输入读取地图的行数 n 和列数 mscanf("%d%d",&n,&m);// 从标准输入读取起始点的坐标 x 和 yscanf("%d%d",&x,&y);// 循环读取地图的每一行for(int i=1;i<=n;i++){// 从标准输入读取一行字符串,存储到 map[i] 数组中,从索引 1 开始scanf("%s",map[i]+1);}// 调用 dfs 函数,从起始点开始进行深度优先搜索dfs(x,y);// 输出最终计算得到的周长printf("%d\n",ans);return 0;
}

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

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

相关文章

SpringMVC学习使用

一、SpringMVC简单理解 1.1 Spring与Web环境集成 1.1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的&#xff0c;但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(sp…

HCIA项目实践---OSPF的知识和原理总结

9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏&#xff1f; &#xff08;1&#xff09;选路佳&#xff08;是否会出环&#xff09; OSPF 协议采用链路状态算法&#xff0c;通过收集网络拓扑信息来计算最短路径&#xff0c;从根本上避免了路由环路的产生。 &#xff08…

算法题(67):最长连续序列

审题&#xff1a; 需要我们在O&#xff08;n&#xff09;的时间复杂度下找到最长的连续序列长度 思路&#xff1a; 我们可以用两层for循环&#xff1a; 第一层是依次对每个数据遍历&#xff0c;让他们当序列的首元素。 第二层是访问除了该元素的其他元素 但是此时时间复杂度来到…

2021年全国研究生数学建模竞赛华为杯E题信号干扰下的超宽带(UWB)精确定位问题求解全过程文档及程序

2021年全国研究生数学建模竞赛华为杯 E题 信号干扰下的超宽带(UWB)精确定位问题 原题再现&#xff1a; 一、背景   UWB&#xff08;Ultra-Wideband&#xff09;技术也被称之为“超宽带”&#xff0c;又称之为脉冲无线电技术。这是一种无需任何载波&#xff0c;通过发送纳秒…

Vue3折线图,柱状图,饼图,各种图表,适用于所有全平台

开发工具&#xff1a;HBuilderX编译器&#xff0c;uniapp&#xff0c;Vue3&#xff1b; 目标&#xff1a;全平台适用&#xff0c;Web端&#xff0c;小程序端&#xff0c;Android端&#xff0c;ios端&#xff0c;快应用等所有平台&#xff0c;鸿蒙app&#xff0c;前端&#xff…

联想电脑如何进入BIOS?

打开设置 下滑找到更新与安全 点击恢复和立即重新启动 选择疑难解答 选择UEFI固件设置 然后如果有重启点击重启 重启开机时一直点击FNF10进入BIOS界面

ICIR2025 | CubeDiff:重新利用基于扩散的图像模型来生成360°全景图

CubeDiff是一种使用基于扩散的图像模型生成 360 全景图的新型框架。通过利用立方体图表示和微调预训练的文本到图像模型&#xff0c;CubeDiff 简化了全景图生成过程&#xff0c;提供了高质量、一致的全景图。 CubeDiff 利用立方体图来表示 360 全景图&#xff0c;并在一次传递中…

YOLO11网络结构以及改进1

YOLO11 1.YOLO11网络结构图在哪里&#xff1f;2.对应的网络结构图3.每一个模块详解3.1 Conv模块3.2关于卷积模块3.3 关于给各个模块指定参数的细节 4.加入CBAM 1.YOLO11网络结构图在哪里&#xff1f; 2.对应的网络结构图 3.每一个模块详解 3.1 Conv模块 位置&#xff1a;ultr…

兔兔答题应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。

“兔兔答题系统”是一个面向教育、培训和在线测评场景的智能化答题平台&#xff08;兔兔答题官网地址&#xff09;。其设计目标是帮助用户高效完成题目练习、考试组织及学习效果分析&#xff0c;通常具备以下核心功能和特色&#xff1a; 一、核心功能 题库管理 支持多题型录入&…

网络安全防范

实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&#xff0c;无法阻止非网络传播形式的病毒&#xff0c;安全策略…

Java 设计模式之组合模式

文章目录 Java 设计模式之组合模式概述UML代码实现 Java 设计模式之组合模式 概述 组合模式(Composite)&#xff1a;将对象组合成树形结构以表示’部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。优点&#xff1a;客户端可以统一处理单个对象…

基于VS2022在Windows上首次尝试开发C++ gRPC服务端和客户端的详细步骤

文章目录 **1. 创建解决方案与项目****2. 编写proto文件****3. 生成gRPC代码****4. 配置项目属性****服务端项目&#xff08;gRPCServer&#xff09;****客户端项目&#xff08;gRPCClient&#xff09;** **5. 实现服务端代码****6. 实现客户端代码****7. 编译与运行****注意事…

云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现

在新能源汽车越来越普及的今天&#xff0c;充电基础设施的管理和运营变得越来越重要。云创智城充电系统&#xff0c;就像一个超级智能管家&#xff0c;为新能源充电带来了全新的解决方案&#xff0c;让充电这件事变得更方便、更高效、更安全。 一、厉害的技术架构&#xff0c;让…

【第2章:神经网络基础与实现——2.4 实战案例:使用TensorFlow或PyTorch实现简单的MLP模型】

一、神经网络基础 咱先聊聊神经网络的基础概念。神经网络,简单来说,就是模仿人类大脑神经元结构构建的计算模型。它由大量的节点(也就是神经元)和连接这些节点的边组成。这些节点就像大脑里的一个个小处理器,而边则负责传递信息。 神经元 神经元是神经网络的基本单元。…

【Uniapp】关于实现下拉刷新的三种方式

在小程序、h5等地方中&#xff0c;常常会用到下拉刷新这个功能&#xff0c;今天来讲解实现这个功能的三种方式&#xff1a;全局下拉刷新&#xff0c;组件局部下拉刷新&#xff0c;嵌套组件下拉刷新。 全局下拉刷新 这个方式简单&#xff0c;性能佳&#xff0c;最推荐&#xf…

生成式聊天机器人 -- 基于Transformer实现的SeqToSeq模型 -- 上

生成式聊天机器人 -- 基于Transformer实现的SeqToSeq模型 -- 上 引言数据预处理下载并处理数据数据加载 Transformer模型嵌入层&位置编码层多头注意力机制EncoderLayerDecoderLayerPoint-wise Feed Forward NetworkTransformer 引言 在此之前&#xff0c;我们已经了解了如…

TCP文件传输

文件传输 工作原理 本质:客户端通过标准IO或者文件IO&#xff0c;读取文件中的信息 然后将读取到的信息&#xff0c;通过套接字发送给服务器 服务器接收到这些数据之后&#xff0c;立刻通过标准IO或者文件IO写到文件里面去 这个过程里面&#xff0c;服务器需要知道2件事情 1&…

欧拉函数杂记

定义 φ ( n ) \varphi (n) φ(n)表示 [ 1 , n ] [1,n] [1,n]中与 n n n互质的数的个数。 性质 φ ( p ) p − 1 , p ∈ P \varphi (p)p-1,\ p\in \mathbb {P} φ(p)p−1, p∈P φ ( n ) n ∏ i 1 m p i − 1 p i \varphi (n)n\prod_{i1}^{m} \frac{p_i-1}{p_i} φ(n)ni1∏…

在 CentOS 上更改 SSH 默认端口以提升服务器安全性

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例

搞个引言 在 Spring 框架的开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是它的一个核心特性&#xff0c;它能够让代码更加模块化、可测试&#xff0c;并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…