P1141 01迷宫(dfs+染色联通块)

 染色联通块:

一个格联通的所有格

每个对应的最大可联通格子的个数均相同

分析:

1.只需要计算每个块里的元素个数

2.元素标记对应某个块

3.查找元素时:

由        (1)元素坐标->

           (2)查找对应块的编号(visit[]查询)->

           (3)输出对应块的元素个数(item[]查询)

 代码如下:

#include<iostream>
using namespace std;

int next1[5][3] = { {1,0},{-1,0},{0,1},{0,-1} };

// 迷宫
char map[1009][1009] = {0};

int visit[1009][1009] = { 0 };

// 记录联通块记录的数量
int item[1000009] = { 0 }, k = 1;

// 记录单个联通块的元素数量
int n = 1;

// 矩阵的边长,查看的数量
int num = 0, check = 0;
void bfs(int x, int y);
int main()
{

	scanf("%d %d", &num, &check);

	for (int i = 0; i < num; i++)
	{
		scanf("%s", map[i]);
	}

	// 如果map为0,即该点未有联通块
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < num; j++)
		{
			if (!visit[i][j])
			{
				visit[i][j] = k; item[k] = 1;

				bfs(i, j);
				item[k] = n;
				k++; n = 1;
			}
		}
	}

	for (int i = 0; i < check; i++)
	{
		int t1 = 0, t2 = 0;
		scanf("%d %d", &t1, &t2);
		cout << item[visit[t1 - 1][t2 - 1]] << endl;
	}
	return 0;
}
void bfs(int x, int y)
{
	for (int i = 0; i < 4; i++)
	{	// 广度四个方向
		int tx = x + next1[i][0], ty = y + next1[i][1];

		// 数组溢出continue
		if (tx < 0 || tx >= num || ty < 0 || ty >= num) continue;

		// 该方向是一样,无法走continue
		if (map[x][y] == map[tx][ty]) continue;

		if (!visit[tx][ty])
		{
			// 标记坐标属于的联通块编号
			visit[tx][ty] = k;

			// 计算该联通块的元素数量
			n++;
			bfs(tx, ty);
		}
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DSP介绍及CCS

文章目录 CCS版本编译器CCS使用注意严禁中文 CCS的基本操作新建工程导入现有工程调整字体的大小工程界面恢复标签的使用 仿真盒小虫子进入在线Debug 芯片TMS320F28355基本介绍特性 DSP中特殊指令dsp指令中的EALLOW EDIS CCS TI官网 版本 CCS版本&#xff1a; CCS8.3.1.0004_…

养猫7年:猫罐头牌子哪个好用?5款口碑好的猫罐头推荐!

猫罐头牌子哪个好用&#xff1f;刚开始养猫真的好心累&#xff0c;因为一开始啥也不懂&#xff0c;关于猫猫的饮食这也不会选那也不会选&#xff0c;就很容易踩雷&#xff0c;为此花了不少钱&#xff0c;相信很多新手铲屎官现在也处于这种状态吧。 作为一个养猫7年的资深铲屎官…

Day01 嵌入式 -----流水灯

一、简单介绍 嵌入式系统中的流水灯是一种常见的示例项目&#xff0c;通常用于演示嵌入式系统的基本功能和控制能力。流水灯由多个发光二极管&#xff08;LED&#xff09;组成&#xff0c;这些LED按照一定的顺序依次点亮和熄灭&#xff0c;形成一种像水流一样的流动效果。 二、…

django+drf+vue 简单系统搭建 (3) - 基于类的视图

传统Django中有基于类的视图&#xff0c;Drf中自然也有&#xff0c;目的都是实现功能的模块化继承&#xff0c;封装&#xff0c;减少重复代码。 首先在视图中新增下面代码&#xff1a; # simpletool/views.pyfrom rest_framework.views import APIView from simpletool.seria…

关于使用Java-JWT的笔记

Token的组成规则 一个token分三部分&#xff0c;按顺序为&#xff1a;头部&#xff08;header)&#xff0c;载荷&#xff08;payload)&#xff0c;签证&#xff08;signature) 由三部分生成token &#xff0c;三部分之间用“.”号做分隔。 例如&#xff1a;“eyJhbGciOiJIUzI1…

【Android Jetpack】理解ViewModel

文章目录 ViewModel实现ViewModelViewModel的生命周期在Fragments间分享数据ViewModel和SavedInstanceState对比ViewModel原理ViewModel与AndroidViewModel ViewModel Android系统提供控件&#xff0c;比如Activity和Fragment&#xff0c;这些控件都是具有生命周期方法&#x…

对象中扩展运算符的作用

1.对象的合并 let o1 {name: "张三",age: 18,brother: {name: "李四",age: 19,},};//属性不重复let o2 {hobby: "打篮球",};console.log({ ...o1, ...o2 });//属性重复&#xff0c;后面对象的属性会覆盖前面的属性let o3 {name: "王五&q…

P2 C++变量

前言 一 C变量的作用 本期我们来讨论一下c 中的变量。 在一个 C 程序中&#xff0c;大部分内容实际上都是在使用数据。我们操作任何类型的数据&#xff0c;如包括我们想要改变、想要修改&#xff0c; 想要读和写数据。我们都需要把数据存储进叫做变量的东西里面。变量允许我们…

Github搜索技巧

文章目录 1 普通搜索2 高级搜索技巧3 github advance查找工具 1 普通搜索 我们一般在github搜索项目&#xff0c;都是直接在根据仓库关键字搜索项目&#xff0c;可能还会用到图中的匹配条件进行筛选。 这样虽然能实现我们的大部分需求&#xff0c;但还不足实现精确查找。而git…

SpringCloud实用篇02

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我…

卷积神经网络(ResNet-50)鸟类识别

文章目录 卷积神经网络&#xff08;CNN&#xff09;mnist手写数字分类识别的实现卷积神经网络&#xff08;CNN&#xff09;多种图片分类的实现卷积神经网络&#xff08;CNN&#xff09;衣服图像分类的实现卷积神经网络&#xff08;CNN&#xff09;鲜花的识别卷积神经网络&#…

提升--09-1--AQS底层逻辑实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、怎么解释AQS是什么&#xff1f;AQS的本质是JUC包下一个抽象类&#xff0c;AbstractQueuedSynchronizer &#xff08;抽象的队列式同步器&#xff09; 二、AQS核…

Flowable工作流高级篇

文章目录 一、任务分配和流程变量1.任务分配1.1 固定分配1.2 表达式分配1.2.1 值表达式1.2.2 方法表达式 1.3 监听器分配 2.流程变量2.1 全局变量2.2 局部变量2.3 案例讲解 二、候选人和候选人组1.候选人1.1 定义流程图1.2 部署和启动流程实例1.3 任务的查询1.4 任务的拾取1.5 …

STM32:时钟树原理概要

在一般情况下只要在CubeIDE中将RCC下的高速时钟源设置成晶振&#xff0c;随后在时钟配置中把HCLK设置到最大频率&#xff08;比如STM32F103的最高频率是72MHZ &#xff09;&#xff0c;CubeIDE就会帮我们自动调节其它参数到合适的值。这样我们芯片就可以全速运行了。 一、时钟信…

【20年扬大真题】设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保障该表的有序性。

【20年扬大真题】 设顺序表va中的数据元素递增有序。 试写一算法&#xff0c;将x插入到顺序表的适当位置上&#xff0c;以保障该表的有序性。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h> #define MaxSize 9//定义最大长度 int InitAr…

俄罗斯网络间谍组织在有针对性的攻击中部署LitterDrifter USB蠕虫

导语 俄罗斯网络间谍组织最近在针对乌克兰实体的攻击中&#xff0c;部署了一种名为LitterDrifter的USB蠕虫。这种蠕虫具有自动传播恶意软件的功能&#xff0c;并与威胁行为者的命令和控制服务器进行通信。该组织被称为Gamaredon&#xff0c;其攻击行动被认为是大规模的&#xf…

探寻欧洲市场的机遇:深度剖析欧洲跨境电商

随着全球化的不断推进&#xff0c;欧洲作为一个经济发达、多元文化共存的大陆&#xff0c;成为跨境电商发展的重要目标。本文将深入剖析欧洲跨境电商的机遇&#xff0c;分析欧洲市场的特点、挑战与前景&#xff0c;为企业提供在这个充满潜力的市场中蓬勃发展的指导。 欧洲市场的…

ArcGIS教程——ArcGIS工具-按线分割面

功能说明 在ArcGIS数据处理过程中&#xff0c;有时需要沿线把面要素分割开&#xff0c;可以使用高级编辑中的分割面&#xff08;Cut Polygon&#xff09;工具。那么&#xff0c;如果要用线图层分割面图层该怎么办呢&#xff1f;地理遥感生态网平台开发了一个自定义模型工具。它…

【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器

&#x1f3a5; 个人主页&#xff1a;深鱼~ &#x1f525;收录专栏&#xff1a;cpolar &#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控…

MySQL InnoDB 引擎底层解析(三)

6.3.3. InnoDB 的内存结构总结 InnoDB 的内存结构和磁盘存储结构图总结如下&#xff1a; 其中的 Insert/Change Buffer 主要是用于对二级索引的写入优化&#xff0c;Undo 空间则是 undo 日志一般放在系统表空间&#xff0c;但是通过参数配置后&#xff0c;也可以用独立表空 间…