【洛谷题解】P1162 填涂颜色

洛谷颜色对照表 阅读详情

题目概况

题目链接: https://www.luogu.com.cn/problem/P1162
难度: 普及-

题目分析

简化题目: 把图中1包裹起来的部分全部写成2。
涉及知识点: 深度优先搜索DFS
解题思路:
我们可以反其道而行之。采用染色法,将1围栏外的元素全部标记,然后剩下没有被染色的部分即为围栏以内的。
在输入时要把围墙提前染色标记。在0,0~n+1,n+1搜索(因为还可能有边边上的没被围住的,这点比较特殊,比如下面的一组数据),再染色。

6
0 0 1 1 1 0
1 1 1 0 1 0
1 0 0 0 0 1
1 1 0 1 1 1
0 1 0 1 0 0
0 1 1 1 0 0

代码拆解及要点分析

老规矩,普及-的题目不写拆解分析

完整代码

#include <iostream>
#include <cstdio>

using namespace std;

const int MAXN = 35;
int n;
int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; //四个方向
int ma[MAXN][MAXN], vis[MAXN][MAXN]; //ma是图,vis是标记数组

bool in(int a, int b) { //范围内判断函数
	return a >= 0 && a <= n + 1 && b >= 0 && b <= n + 1;
}

void dfs(int x, int y) {
	for (int i = 0; i < 4; i++) {
		int tx = x + dir[i][0];
		int ty = y + dir[i][1];
		if (in(tx, ty) && vis[tx][ty] == 0) { //在范围内,这不是个围墙
			vis[tx][ty] = 1; //染个色
			dfs(tx, ty); //继续
		}
	}
}
int main() {
	cin >> n;
	for(int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> ma[i][j];
			if (ma[i][j] == 1 ){
				vis[i][j] = 1; //围墙提前染色标记
			}
		}
	} 
	dfs(0,0);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (vis[i][j] == 0) { //如果经过dfs没有被染色,那么就在围墙内
				cout << 2 << " ";
			} else {
				cout << ma[i][j] << " "; //原模样输出
			}
		}
		cout << endl;
	}
	return 0;
}
【题解-洛谷】P1162 填涂颜色 现要求把闭合圈内的所有空间都填写成。闭合圈不一定是环形的,可以是任意形状,但保证。的情况下,无法到达方阵的边界,就认为这个。组成的方阵中,有一任意形状的由数字。方阵内只有一个闭合圈,圈内至少有一个。是连通的(两两之间可以相互到达)。每组测试数据第一行一个整数。个方向移动且仅经过其他。 阅读详情

相关推荐

题解:洛谷 P1162 填涂颜色

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。组成的方阵中,有一任意形状闭合圈,闭合圈由数字。现要求把闭合圈内的所有空间都填写成。方阵内只有一个闭合圈,圈内至少有一个。构成,围圈时只走上下左右。每组测试数据第一行一个整数。#普及-# #BFS-二维#本文分享的必刷题目是从。

团爸讲算法 935

洛谷-各个评测状态

洛谷创建于2013年6月15日,至今已有数万用户,致力于为OIers/ACMers提供清爽、快捷的编程体验。它不仅仅是一个在线测题系统,更拥有强大的社区、在线学习功能。同时,许多教程内容都是由五湖四海的ers提供的,保证了内容的广泛性。无论是初学oi的蒟蒻,还是久经沙场的神犇,均可从洛谷Online Judge获益,也可以帮助他人,共同进步。 评测 洛谷评测系统搭建与Linux上,采用分布式集群保...

mengdicfm的博客 4万+

t1题解1

这道题改编自洛谷P1162。N<=30,搜索即可。从边界开始搜,多开一个b数组,把原来为1的格子在b中标记为-1。在1外围的格子在原地图中标记为1。最后遍历一遍

洛谷——p1162 填涂颜色

由数字 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 个方向。这个题目首先我想的是遍历地图,如果每个点的上下左右都可以找到‘ 1 ’ ,那这个点就被 1 包围着。这是一个比较基础的搜索题,但是我想了挺久,然后第一个思路还是错的。接下来 n 行,由 0 和 1 组成的 n×n 的方阵。每组测试数据第一行一个整数 n(1≤n≤30)。方阵内只有一个闭合圈,圈内至少有一个 0。1 1 1 1 1 1(涂色前)1 1 1 1 1 1(涂色后)已经填好数字 2 的完整方阵。

明里灰的博客 841

别再用Excel硬算传热了!用MATLAB/Octave复现国赛数学建模A题(附完整代码与避坑指南)

本文详细介绍了如何利用MATLAB/Octave高效解决数学建模中的传热问题,替代传统的Excel计算方法。通过复现2018年国赛A题的高温作业服传热模型,从理论推导到代码实现,提供了完整的有限差分法解决方案和参数拟合技巧,帮助读者提升数学建模效率和准确性。

weixin_30512965的博客 382

PPT太丑?用InDesign制作电影级的交互式在线演示文档

本文旨在解决传统演示软件(如PowerPoint、Keynote)在制作商业提案、设计报告时,普遍存在的模板化严重、视觉表现力不足、动态效果廉价的核心痛点。我们将介绍一套常被设计师们“误解”或“忽略”的“降维打击”工作流,核心是利用印刷排版软件 Adobe InDesign 强大的版式控制、动画与交互功能,来创建电影级的动态演示文稿,并通过其 在线发布 (Publish Online) 功能,一键生成可在任何浏览器中流畅访问的网页版交互式文档,从而极大地提升提案的专业度与视觉冲击力。

Kingsdesigner的博客 1282

洛谷黑题学习笔记(1):树上的数

这题是CSP-S2019第二轮考试的第一天的第3题。洛谷上大家对CSP-S2019六道题的难度评级为 题目 难度等级 难度颜色 T1 格雷码 1级:普及- 橙色 T2 括号树 4级:普及+/提高 绿色 T3 树上的数 7级:NOI/NOI+/CTSC 深蓝色 T4 Emiya家今天的饭 5级:提高+/省选- 浅蓝色 T5 划分 6级:省选/NOI- 紫色 T6 ...

小树学信奥 6064

PPO实战:如何用强化学习让小车爬上MountainCarContinuous-v0山顶(附完整代码)

本文提供了使用PPO算法解决MountainCarContinuous-v0环境的完整实战教程。针对该环境的连续动作空间和稀疏奖励挑战,文章详细解析了PPO智能体的网络架构、状态归一化、GAE优势估计等核心实现,并附带了可直接运行的PyTorch代码。同时分享了关键的调参技巧和实战避坑指南,帮助读者高效训练智能体完成小车爬坡任务。

linux的博客 968

洛谷题解 - P1162 填涂颜色

现要求把闭合圈内的所有空间都填写成。闭合圈不一定是环形的,可以是任意形状,但保证。的情况下,无法到达方阵的边界,就认为这个。我的思路是在外面围一圈0,再进行联通块dfs。组成的方阵中,有一任意形状的由数字。方阵内只有一个闭合圈,圈内至少有一个。是连通的(两两之间可以相互到达)。每组测试数据第一行一个整数。个方向移动且仅经过其他。

Python_enjoy 是一个大帅哥! 1428

高精度计算Π的值(C语言)

题目要求 限制使用双向链表作存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后500位),高精度计算PI值。可以利用反三角函数幂级展开式来进行计算。 输入5 输出3.14159 思路分析 反三角函数幂级展开式 由公式可以看出,只要计算出来每一个R(n)的值再相加取二倍就可以得到Π的值。 经过推算,要是令R(1)=2,只需要将每个R(n),相加即可。 因...

weixin_46251155的博客 8033

华为OD机考真题 新系统 - 小菊的寻宝之旅(Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【小菊的寻宝之旅】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小菊的寻宝之旅】多语言题解。

qq_45776114的博客 626

洛谷:P1162 填涂颜色 Java题解

题目要求我们在一个由0和1组成的矩阵中,将闭合圈内的所有0填充为2。闭合圈由1组成,圈内的0是指那些无法通过上下左右移动到达矩阵边界的0。该解法高效且易于理解,能够正确处理题目给定的最大数据规模(30×30的矩阵)。:O(N²),其中N是矩阵的大小。每个格子最多被访问一次。:O(N²),用于存储标记数组和队列。

Java爱好者,热爱分享,信仰开源! 379

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 426

洛谷 P1162 填涂颜色 题解(两种版本)

这道题目要求在一个由0和1组成的矩阵中,将所有被1完全包围的0区域标记为2。解题思路是从矩阵边界出发,通过BFS或DFS遍历所有能到达的0,这些0不属于闭合区域。剩下的未被访问的0就是被1包围的区域,将其改为2输出即可。代码实现上,两种搜索方法都适用,核心是逆向思维处理边界可达性问题。时间复杂度为O(n^2),适用于n≤30的数据规模。

2301_80076739的博客 1819

Host是如何与EC通信的

EC中有三个寄存器,分别为状态寄存器EC_SC、命令寄存器EC_SC和数据寄存器EC_DATA。而状态寄存器和命令寄存器同属于一个寄存器,这几个寄存器遵循着ACPI EC规范。host可以根据ACPI协议规范来与EC进行通信。 以下是个寄存器的详细介绍。 EC状态寄存器(EC_SC(R)),该寄存器是一个只读寄存器,它反映了此时EC接口的状态。下图为该寄存器表。 EC状态寄存器表中各位的具体含义: OBF(Output Buffer is Full),该状态位置1...

qq_30135687的博客 3698

基于Simulink进行微电网中DC-DC变换器的仿真建模

微电网:包括可再生能源发电设备、储能系统和负载,可以独立于大电网运行,也可以并网运行。重要性提高能源可靠性:通过本地化供电减少对外部电网的依赖。促进可再生能源利用:支持高效整合多种可再生能源。挑战多源管理:不同类型的能源产生方式各异,需设计灵活的电源管理系统。能量转换效率:需要高效的能量转换装置来确保能源的有效利用。首先明确要模拟的任务内容。设计一个能够在不同输入条件下为微电网提供稳定输出电压的DC-DC变换器。根据微电网的工作状态调整控制策略以维持最佳性能。

amy_mhd的博客 156

洛谷—P1162 填涂颜色题解

题目链接:P1162 填涂颜色 解题思路: 用DFS搜索,用vis数组记录当前点有没有访问过。如果没有就输出2,否则输出0。实际上这是不对的。看下面: 我们的判断数组是这个样子,从DFS(1,1)开始搜索 bool check(int x, int y) { if (x<1 || x>n || y<1 || y>n) { return 0; } return 1; } 然后提交会发现过不了。这是因为dfs在先搜索的时候应该搜索到矩阵的外面一圈(0, n + 1) 否则的话

NCU_tanghulu的博客 669

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

洛谷题解——P1162:填涂颜色

题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1162。 题目描述 由数字 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 个方向。现要求把闭合圈内的所有空间都填写成 2。 输入格式 每组测试数据第一行一个整数 n。 接下来 n 行,由 0 和 1 组成的 n×n 的方阵。 方阵内只有一个闭合圈,...

努力中的老周的专栏 1748

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

洛谷【P1162 填涂颜色】题解

洛谷【P1162 填涂颜色】题解

2303_80645080的博客 669

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

洛谷P1162 填涂颜色题解

由数字 00 组成的方阵中,有一任意形状的由数字 11 构成的闭合圈。如果从某个 00 出发,只向上下左右 44 个方向移动且仅经过其他 00 的情况下,无法到达方阵的边界,就认为这个 00。如果遇到1就跳过,不是1的就换成1,由于内层的0是被包裹着的,搜完了后。接下来 nn 行,由 00 和 11 组成的 n×nn×n 的方阵。每组测试数据第一行一个整数 n(1≤n≤30)n(1≤n≤30)。对于 100%100% 的数据,1≤n≤301≤n≤30。闭合圈不一定是环形的,可以是任意形状,但保证。

djy2024的博客 782

洛谷 P1162 填涂颜色 题解

刚看到这道题的时候无从下手,不理解题意到底在考察什么,看了dalao的一片题解后才明白,原来是求解联通块的问题…(所谓联通块在这道题里面可以理解为数字相同的块) 所以本题的题意就相当于如果一个联通块其中有块在边界时,那么这个联通块一定不在闭合曲线里面了,而先找联通块再去判断这种方法比较麻烦,所以我们利用逆向思维,先找到边界上的块,再找到他的联通块,这样找到的整个联通块就一定不在闭合曲线里面了,注...

wildg00se的博客 498

洛谷 P1162 填涂颜色 思路简单的题解

题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6*6(n=6),涂色前和涂色后的方阵如下: 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1 输入格式 每组测试数据第一行一个

Gardenias_2020的博客 705

【题解】洛谷P1162填涂颜色 bfs

题目链接 从边界bfs,标记所有圈外的0,最后找未标记的0 #include&lt;cstdio&gt; #include&lt;queue&gt; using namespace std; int n,a[35][35],vis[35][35]; int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; struct node{ int x,y; node(){} ...

翻过这座山,他们就会听到你的故事 583

洛谷P1162 填涂颜色 题解

题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向。现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6),涂色前和涂色后的方阵如下: 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 ...

LackProgramMonkey的博客 1402

洛谷P1162 填涂颜色(bfs) 题解

题目来源:点击打开链接题目描述:题目描述由数字 00 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 11 构成,围圈时只走上下左右 44 个方向。现要求把闭合圈内的所有空间都填写成 22 .例如: 6 \times 66×6 的方阵( n=6n=6 ),涂色前和涂色后的方阵如下:0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1...

摇摇乐的博客 478
上一篇: 【洛谷题解】P1101 单词方阵
下一篇: 【洛谷题解/计蒜客题解/NOIP2001提高组】P1025/T2155 数的划分
oier_Asad.Chen
博客等级 码龄7年 15粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oier_Asad.Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值