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

2.14寒假

这几天复习的搜索把之前做过的题目看了一下。

解析:int dx[5]={0,0,1,0,-1}; 和 int dy[5]={0,1,0,-1,0};:这两个数组用于表示上下左右四个方向的偏移量,方便在 DFS 中访问相邻的元素。o 和 p 分别表示当前搜索位置的行和列。边界条件判断:如果当前位置超出矩阵范围(o<0||o>n+1||p<0||p>n+1)或者当前位置的值不为 0,则直接返回。标记当前位置:将当前位置的值标记为 1,表示该位置已经被访问过。递归搜索相邻位置:通过 dx 和 dy 数组遍历当前位置的上下左右四个相邻位置,并递归调用 dfs 函数进行搜索。首先读取矩阵的大小 n,然后使用双重循环读取 n x n 的矩阵元素,并将其存储在数组 a 中,同时将 a 中的元素复制到数组 b 中。从边界开始进行深度优先搜索:分别从矩阵的上下左右边界开始调用 dfs 函数进行搜索,将与边界相连的所有 0 标记为 1。替换未标记的 0:遍历数组 a,如果某个位置的值仍然为 0,说明该位置被 1 完全包围,将数组 b 中对应位置的值替换为 2。
输出结果:使用双重循环遍历数组 b,并输出处理后的矩阵。

#include<stdio.h>
int a[30][30],b[30][30];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int n;
void dfs(int o,int p)
{int i;if(o<0||o>n+1||p<0||p>n+1||a[o][p]!=0){return;}a[o][p]=1;for(i=1;i<=4;i++){dfs(o+dx[i],p+dy[i]);}
}int main()
{int i,j;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i][j]=a[i][j];}}for(i=0;i<n;i++)dfs(0,i);for(i=0;i<n;i++)dfs(n-1,i);for(i=0;i<n;i++)dfs(i,0);for(i=0;i<n;i++)dfs(i,n-1);for(i=0;i<n;i++){for(j=0;j<n;j++){if(a[i][j]==0)b[i][j]=2;}}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d ",b[i][j]);printf("\n");}return 0;
}

解析:使用双重循环遍历整个二维网格。当遇到字符不为 '0' 的位置时,调用 dfs 函数进行深度优先搜索,将该连通区域的所有 '1' 标记为 '0'。每完成一次 dfs 搜索,就意味着找到了一个新的连通区域,count 加 1。

#include<stdio.h>
int n,m,count=0;
char a[101][101];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};void dfs(int x,int y)
{int i;if(x<1||x>n||y<1||y>m||a[x][y]=='0')return;a[x][y]='0';for(i=1;i<=4;i++){dfs(x+dx[i],y+dy[i]);}
}int main() 
{int i,j;scanf("%d %d",&n,&m);for(i=1; i<=n; i++) {for(j=1; j<=m; j++) {scanf(" %c",&a[i][j]);}}for(i=1; i<=n; i++) {for(j=1; j<=m; j++) {if(a[i][j]!='0'){dfs(i,j);count++;}}}printf("%d",count);return 0;
}

相关文章:

2.14寒假

这几天复习的搜索把之前做过的题目看了一下。 解析&#xff1a;int dx[5]{0,0,1,0,-1}; 和 int dy[5]{0,1,0,-1,0};&#xff1a;这两个数组用于表示上下左右四个方向的偏移量&#xff0c;方便在 DFS 中访问相邻的元素。o 和 p 分别表示当前搜索位置的行和列。边界条件判断&…...

基于逻辑概率的语义信道容量(Semantic Channel Capacity)和语义压缩理论(Semantic Compression Theory)

基于逻辑概率的语义信道容量&#xff08;Semantic Channel Capacity&#xff09;和语义压缩理论&#xff08;Semantic Compression Theory&#xff09;是语义通信&#xff08;Semantic Communication, SemCom&#xff09;的核心研究方向&#xff0c;它们旨在优化通信效率&#…...

DeepSeek R1本地部署教程

尽管许多卖课博主声称能轻松运行满血版DeepSeek R1&#xff0c;但满血版R1模型参数高达671B&#xff0c;仅模型文件就需要404GB存储空间&#xff0c;运行时更需要约1300GB显存。 对于没有卡的普通玩家来说&#xff0c;运行的条件苛刻&#xff0c;且门槛极高。基于此&#xff0…...

CEF132编译指南 MacOS 篇 - 获取 CEF 源码 (五)

1. 引言 在完成了所有必要工具的安装和配置之后&#xff0c;我们正式进入获取 CEF132 源码的阶段。对于 macOS 平台&#xff0c;CEF 的源码获取过程需要特别注意不同芯片架构&#xff08;Intel 和 Apple Silicon&#xff09;的区别以及版本管理。本篇将作为 CEF132 编译指南系…...

TypeScript装饰器 ------- 学习笔记分享

目录 一. 简介 二. 类装饰器 1. 基本语法 2. 应用举例 3. 关于返回值 4. 关于构造类型 5. 替换被装饰的类 三. 装饰器工厂 四. 装饰器组合 五. 属性装饰器 1. 基本语法 2. 关于属性遮蔽 3. 应用举例 六. 方法装饰器 1. 基本语法 2. 应用举例 七. 访问器装饰器 …...

FPGA实现UltraScale GTH光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本博已有的FPGA驱动USB通信方案 3、工程详细设计方案工程设计原理框图输入Sensor之-->OV5640摄像头动态彩条输入视频之-->ADV…...

蓝桥杯篇---实时时钟 DS1302

文章目录 前言特点简介1.低功耗2.时钟/日历功能3.32字节的额外RAM4.串行接口 DS1302 引脚说明1.VCC12.VCC23.GND4.CE5.I/O6.SCLK DS1302 寄存器1.秒寄存器2.分钟寄存器3.小时寄存器4.日寄存器5.月寄存器6.星期寄存器7.年寄存器8.控制寄存器 DS1302 与 IAP25F2K61S2 的连接1.CE连…...

C语言蓝桥杯1003: [编程入门]密码破译

要将"China"译成密码&#xff0c;译码规律是&#xff1a;用原来字母后面的第4个字母代替原来的字母&#xff0e; 例如&#xff0c;字母"A"后面第4个字母是"E"&#xff0e;"E"代替"A"。因此&#xff0c;"China"应译…...

【MySQL在Centos 7环境安装】

文章目录 一. 卸载不必要的环境二. 检查系统安装包三. 卸载这些默认安装包四. 获取mysql官⽅yum源五. 安装mysql yum 源&#xff0c;对⽐前后yum源六. 看看能不能正常⼯作七. 安装mysql服务八. .查看配置⽂件和数据存储位置九. 启动服务并查看服务是否存在十. 登陆⽅法十一. 设…...

科技引领未来,中建海龙C-MiC 2.0技术树立模块化建筑新标杆

在建筑行业追求高效与品质的征程中&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;以其卓越的创新能力和强大的技术实力&#xff0c;不断书写着装配式建筑领域的新篇章。1 月 10 日&#xff0c;由深圳安居集团规划&#xff0c;中建海龙与中海建筑共…...

玩转观察者模式

文章目录 什么是观察者模式解决方案结构适用场景实现方式观察者模式优缺点优点:缺点:什么是观察者模式 观察者模式通俗点解释就是你在观察别人,别人有什么变化,你就做出什么调整。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察…...

Baklib知识中台构建企业智能运营核心架构

内容概要 在数字化转型的浪潮中&#xff0c;企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台&#xff0c;通过构建智能运营核心架构&#xff0c;为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…...

Anaconda +Jupyter Notebook安装(2025最新版)

Anaconda安装&#xff08;2025最新版&#xff09; Anaconda简介安装1&#xff1a;下载anaconda安装包2&#xff1a; 安装anaconda3&#xff1a;配置环境变量4&#xff1a;检查是否安装成功5&#xff1a;更改镜像源6&#xff1a;更新包7&#xff1a;检查 Jupyter Notebook一.Jup…...

正成为现代城市发展的必然趋势的智慧交通开源了

智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过人流密集检测…...

手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现

Transformer 编码器深度解读 代码实战 1. 编码器核心作用 Transformer 编码器的核心任务是将输入序列&#xff08;如文本、语音&#xff09;转换为富含上下文语义的高维特征表示。它通过多层自注意力&#xff08;Self-Attention&#xff09;和前馈网络&#xff08;FFN&#x…...

Webpack和Vite插件的开发与使用

在现代开发中一般各公司都有自己的监控平台&#xff0c;对前端而言如果浏览器报错的话就可以通过埋点收集错误日志&#xff0c;再结合sourcemap文件可以帮助我们定位到错误代码&#xff0c;帮助我们排查问题。这里就记录一下之前在webpack和vite两个环境中的插件开发&#xff0…...

HTTP的状态码

HTTP 状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含 HTTP 状态码的信息头&#xff08;server header&#xff09;用以响应浏览器的请求。 常见的HTTP状态码 …...

Python函数-装饰器

装饰器 写好的函数&#xff0c;不做任何修改&#xff0c;就可以改变执行内容&#xff0c;在其头或尾部加入新的流程代码本质上就是使用函数嵌套&#xff0c;在内部嵌套定义的函数中调用原函数&#xff0c;从而可读在前或后加入新的代码使用的关键&#xff1a; 将原函数作为参数…...

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

HTTP请求报文头和相应报文头

一、HTTP请求报文头 HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。 1.1 请求行 格式: 方法 请求URI HTTP/版本示例: GET /index.html HTTP/1.1   方法: 请求类型&#xff0c;如GET、POST、PUT、DELETE等。   请求URI: 请求的资源…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...