news 2026/4/25 5:22:24

连通块问题[‘0‘]

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
连通块问题[‘0‘]

家人们,今天来写深度优先里的联通块问题的分析🌶️!

首先来讲讲什么是连通块

连通块问题指在给定的图或矩阵中,寻找所有相互连通的元素组成的集合。连通性通常定义为相邻元素的直接或间接连接(如上下左右相邻或对角线相邻)。这类问题常见于图像处理、网络分析、迷宫求解等领域

而下面这道题就是一道典型的连通块问题

题目描述

一矩形阵列由数字 00 到 99 组成,数字 11 到 99 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。

输入格式

第一行两个整数代表矩阵大小 n 和 m。

接下来 n 行,每行一个长度为 m 的只含字符09的字符串,代表这个 n×m 的矩阵。

输出格式

一行一个整数代表细胞个数。

输入输出样例

输入数据 1

4 10 0234500067 1034560500 2045600671 0000000089

输出数据 1

4

那么这种题怎么做❓️😄菲娜来讲🌶️

诸位作为💺C++の老朋友,主函数的输入不必说

输入后,将值传到☞函数dfs,需要多次循环时,需要一个☝if来判断此时的值是否是不是🙅‍♀️障碍,如果不是就上⬆️传,且计数++就完啦✌️

dfs部分主要就分为三步_(:з」∠)_

第一步 边界判断

判断是否不越界,且不是🙅‍♀️障碍物或不可走等

if(此行<1||此行>总行||此列<1||此列>总列||a[x][y](此处)==障碍物)
{
return ;(结束🔚)
}

第二步 标记📌

诸位想一下,我们在走完后如果不标记走过,是不是会像鬼👻打墙一样一直搜索下去❓️YES❗️所以我们要做标记.

两种方法:1. 设定一个状态数组,如flag[205][205];

flag[此行][此列]=1(表示已走标记📌);

2. 查看题目需求,如果可以,咱就直接用原数组(被输入的数组)去做标记📌就可以了.但是家人们注意,这里的标记咱要用障碍物来标记,也就是直接将数据改为障碍物

a[此行][此列]=障碍物(表示已走标记📌);

第三步 状态拓展

方法1

一般的状态拓展有两种:1.四个方位:上下左右;

dfs(x+1,y);
dfs(x-1,y);
dfs(x,y-1);
dfs(x,y+1)

2.八个方向:上下左右,右上右下,左上左下;

dfs(x+1,y);
dfs(x-1,y);
dfs(x,y-1);
dfs(x,y+1);
dfs(x+1,y-1);
dfs(x-1,y+1);
dfs(x-1,y-1);
dfs(x+1,y+1);

方法二

我们可以将坐标变化编成数组存起来,再使用循环于此行此列相加.这个方法在八位时使用,它的方便更突出.

int dx[5]={0,0,-1,1},dy[5]={1,-1,0,0}//记得行和列的数要相对应

for(i=1;i<=8或4;i++)

{

dfs(x+dx[i],y+dy[i]);

}

对了✅️家人们,你们记得在dfs前加void哦😮.

连通块问题的基本格式菲娜就讲完啦🌶️,拜拜👋!!!

有问题记得说哦😮!!!

GOODBEY┏(^0^)┛

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 5:18:19

C语言01

字符串和\0C语言中字符串以\0作为结束标志将\0插入到字符串中间&#xff0c;可以发现在打印时遇到字符串就直接停止打印了。这个例子当中&#xff0c;打印arr1时能够完整打印下来&#xff0c;因为这是将字符串abcdef存入数组arr1&#xff0c;同时也把\0存进了数据&#xff0c;这…

作者头像 李华
网站建设 2026/4/25 5:17:24

Unity 接入 DeepSeek/Qwen 本地大模型,实现 AI 智能 NPC 自然对话

目录 前言&#xff1a;传统 NPC 痛点 vs AI 智能 NPC 优势&#xff08;图文对比&#xff09; 1. 传统游戏 NPC 核心痛点&#xff08;固定脚本对话&#xff09; 2. AI 智能 NPC&#xff08;DeepSeek/Qwen 本地驱动&#xff09;核心优势 图文对比说明&#xff08;配图规划 1&…

作者头像 李华
网站建设 2026/4/25 5:15:39

2025届毕业生推荐的五大AI辅助论文工具解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理跟深度学习技术的智能辅助工具是AI写作软件&#xff0c;它能够自动生成高质…

作者头像 李华
网站建设 2026/4/25 5:15:04

微带线设计自动化:基于Matlab的线宽与特性阻抗闭环验证方法

1. 微带线设计的基础原理与挑战 微带线作为射频电路中最常用的传输线结构之一&#xff0c;其设计质量直接影响着信号传输的完整性。在实际工程中&#xff0c;我们常常需要根据目标特性阻抗来反推微带线的宽度&#xff0c;这个过程看似简单&#xff0c;却隐藏着不少容易踩坑的细…

作者头像 李华