洛谷题解 - P1162 填涂颜色

【题解-洛谷】P1162 填涂颜色 现要求把闭合圈内的所有空间都填写成。闭合圈不一定是环形的,可以是任意形状,但保证。的情况下,无法到达方阵的边界,就认为这个。组成的方阵中,有一任意形状的由数字。方阵内只有一个闭合圈,圈内至少有一个。是连通的(两两之间可以相互到达)。每组测试数据第一行一个整数。个方向移动且仅经过其他。 阅读详情

填涂颜色

题目描述

由数字 0 0 0 组成的方阵中,有一任意形状的由数字 1 1 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 2 2 2。例如: 6 × 6 6\times 6 6×6 的方阵( n = 6 n=6 n=6),涂色前和涂色后的方阵如下:

如果从某个 0 0 0 出发,只向上下左右 4 4 4 个方向移动且仅经过其他 0 0 0 的情况下,无法到达方阵的边界,就认为这个 0 0 0 在闭合圈内。闭合圈不一定是环形的,可以是任意形状,但保证闭合圈内的 0 0 0 是连通的(两两之间可以相互到达)。

0 0 0 0 0 0
0 0 0 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 1 0 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 1 2 1
1 1 1 1 1 1

输入格式

每组测试数据第一行一个整数 n ( 1 ≤ n ≤ 30 ) n(1 \le n \le 30) n(1≤n≤30)。

接下来 n n n 行,由 0 0 0 和 1 1 1 组成的 n × n n \times n n×n 的方阵。

方阵内只有一个闭合圈,圈内至少有一个 0 0 0。

输出格式

已经填好数字 2 2 2 的完整方阵。

样例 #1

样例输入 #1

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

样例输出 #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

提示

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 30 1 \le n \le 30 1≤n≤30。

题解

思路

我的思路是在外面围一圈0,再进行联通块dfs
在这里插入图片描述

代码

#include<bits/stdc++.h>
// 虽然这题不用开 long long,但俗话说得好:十年 OI 一场空,不开 long long 见祖宗 
#define int long long
using namespace std;
const int N=35;
int n,a[N][N];
//方向数组 
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
//记录有没有来过
bool visited[N][N];
// 深度优先搜索,俗称dfs,你不会要学
void dfs(int x,int y)
{
	if(x<0 || x>n+1 || y<0 || y>n+1) 
	{
		// 判断越界,越界了直接 return 掉 
		return ;
	}
	if(visited[x][y])
	{
		// 看看这个位置有没有被访问过,被访问过直接 return 掉 
		return ;
	}
	if(a[x][y]==1)
	{
		// 判断是不是遍历到 1 了,如果是,直接 return 掉 
		return ;
	}
	a[x][y]=-1;
	// 记录状态
	visited[x][y]=true;
	for(int i=0; i<4; i++)
	{
		dfs(x+dx[i],y+dy[i]);
	}
 } 
signed main(){
	// 输入,这都看不懂了话你就可以退役了 
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			cin>>a[i][j];
		}
	}
	
	// 调用 dfs
	dfs(0,0);
	
	// 输出,用了一些技巧
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			if(a[i][j]==-1)	cout<<0;
			else if(a[i][j]==0) cout<<2;
			else cout<<1;
			cout<<" ";
		}
		cout<<endl;
	 } 
	return 0;
}
题解:洛谷 P1162 填涂颜色 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。组成的方阵中,有一任意形状闭合圈,闭合圈由数字。现要求把闭合圈内的所有空间都填写成。方阵内只有一个闭合圈,圈内至少有一个。构成,围圈时只走上下左右。每组测试数据第一行一个整数。#普及-# #BFS-二维#本文分享的必刷题目是从。 阅读详情

相关推荐

最新版谷歌浏览器Axure插件(免翻墙)

本文介绍了在Chrome浏览器无法直接打开Axure导出HTML文件的解决方法。由于国内网络限制无法访问Chrome商店,需手动下载安装AxureRP扩展插件(提供百度网盘下载链接)。安装步骤包括:1)启用开发者模式;2)拖拽CRX文件或加载解压文件夹;3)勾选"允许访问文件网址"。同时还提示若浏览器版本过低可能无法正常运行,并给出了浏览器升级方法。该教程详细说明了从插件安装到浏览器升级的完整解决方案。

OldCat先生 2977

【洛谷】P1162 填涂颜色(bfs)

穿越隧道 关键对矩阵周围一圈的0进行判断哪些0和他联通,进行标记 #include <bits/stdc++.h> #define x first #define y second using namespace std; typedef pair<int,int> pii; const int N = 2e2 + 10; int g[N][N]; int n; pii q[N*N]; bool st[N][N]; bool vis[N][N]; int dx[4] = {-

qq_45866781的博客 394

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

广度优先搜索——填涂颜色(洛谷 P1162)

题目选自洛谷P1162 首先讲一下思路:根据题意,当找到第一个1时,其右下必然是圈内的0,那么只要从这个0开始广搜寻找联通块就可以了。(因为圈只有一个,那么当找到第一个1之后便要打断循环,很重要!) 题目描述 由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字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 .

青春无问西东 岁月自成芳华 1903

玩转Matlab-Simscape(初级)-01-从一个简单模型开始学习之旅

本文从初学者的角度分享的关于Matlab simscape 的基础内容,简单分享了Simscape搭建模型,创建子系统,修改定义参数等内容,为将来深入学习和使用simscape做铺垫。

万金油笑匠的博客 6524

第33次CCF-CSP认证考试 第一题 词频统计 满分题解

本人小白一枚,抱着学习的态度想到网上找一些csp的参考答案,但由于实力有限,大佬的代码大都看不太懂,于是萌生了想用一些简单,基础的语句完成csp前两题的想法并公开,以便与像我这样实力不强的同学交流学习,如有更好的建议,还请斧正,感谢!

qq_75242106的博客 1869

填涂颜色题

由数字 00 组成的方阵中,有一任意形状的由数字 11 构成的闭合圈。如果从某个 00 出发,只向上下左右 44 个方向移动且仅经过其他 00 的情况下,无法到达方阵的边界,就认为这个 00。接下来 n 行,由 00 和 11 组成的 n×n 的方阵。每组测试数据第一行一个整数 n(1≤n≤30)。闭合圈不一定是环形的,可以是任意形状,但保证。对于 100%100% 的数据,1≤n≤30。的 00 是连通的(两两之间可以相互到达)。方阵内只有一个闭合圈,圈内至少有一个 00。

kx2160841406的博客 594

电力-平衡式IEC 60870-5-101规约报文解析

本文详细介绍了电力自动化中平衡式IEC 60870-5-101规约的应用,包括链路建立与初始化、对时、遥控操作、数据上送和总召唤等关键步骤,通过实例解析了报文格式和交互过程,是理解配网自动化通信的重要参考资料。

让你爱上电路设计 5685

P1162 填涂颜色

法一: 找内部点再bfs进行联通障碍体内部填充本题采用bfs染色(关键在于找联通障碍体内部的一个空地,找到了从此地bfs染色即可)法二(染色法): 需要将原数据拷贝一份,然后一份画布一份原图.把墙外边的空地也设为墙,这样空地的集中独立起来了,即仅存在于被围起来的部分叫空地.先染外部,消灭多余的答案(空地),仅围起来的空地算答案。

m0_59385870的博客 999

基于C#的机器人控制框架:如何将ROS与硬件集成

本文探讨了如何利用C#与ROS(Robot Operating System)集成开发机器人控制系统。通过ROSSharp库和rosbridge中间件,实现了C#与ROS的WebSocket通信,并展示了硬件控制模块的设计方法。文章详细介绍了电机控制的串口通信实现、ROS消息订阅机制,以及性能优化和容错处理策略,最终构建了一个智能小车控制框架的案例。这种C#与ROS的集成方案为机器人开发提供了跨平台支持,同时兼顾了系统的高效性和可靠性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1140

基于YOLOv10的PCB电子元件智能识别系统设计与实现

数据预处理模块:负责对原始PCB图像进行标注、增强和格式转换模型训练模块:基于YOLOv10架构进行模型训练和优化推理检测模块:加载训练好的模型进行实时检测用户界面模块:提供友好的交互界面,方便用户操作和结果可视化YOLO(You Only Look Once)系列算法自2016年提出以来,经历了多次迭代更新。YOLOv1-v3:奠定了YOLO系列的基础架构YOLOv4-v7:引入大量优化技巧和网络结构改进YOLOv8-v9:进一步优化模型结构和训练策略YOLOv10。

YOLO 156

填涂颜色(洛谷1162)

如果从某个 0 出发,只向上下左右4 个方向移动且仅经过其他 $0$ 的情况下,无法到达方阵的边界,就认为这个0在闭合圈内。闭合圈不一定是环形的,可以是任意形状,但保证闭合圈内的 0 是连通的(两两之间可以相互到达)。由数字 0 组成的方阵中,有一任意形状的由数字 1 构成的闭合圈。//标记示例中为一的部分,不在遍历。//做标记(遍历过的不在遍历)接下来 n 行,由0 和 1组成的 n×n的方阵。对于 100% 的数据,1 <= n <= 30。

weixin_70911613的博客 725

损失函数大汇总(六十一)(Signed Distance Map Loss附公式推导与代码)

摘要 本文介绍了Signed Distance Map (SDM) Loss,一种将形状先验直接融入分割任务的方法。SDM将每个像素表示为到目标边界的带符号距离(内部为负,外部为正),相比二值mask能更连续地表达形状几何信息。SDM Loss的核心思想是让网络学习这个隐式形状场,通过可微的Heaviside函数近似将SDM转换为分割结果。文中重点分析了一种product-based regression loss,它能同时关注距离数值和内外符号的正确性,对边界区域尤为敏感。SDM Loss通常与传统的分割

悦学共鸣,温柔以待,汇聚光芒,共同成长 189

洛谷:P1162 填涂颜色 Java题解

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

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

2301_80076739的博客 1819

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

洛谷—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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【洛谷题解】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

lovely_cyqの小窝 868

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

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

努力中的老周的专栏 1748

洛谷【P1162 填涂颜色】题解

洛谷【P1162 填涂颜色】题解

2303_80645080的博客 669

洛谷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 填涂颜色 题解

题目描述 由数字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

题目链接 从边界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 填涂颜色(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
上一篇: DFS 算法:洛谷B3625迷宫寻路
下一篇: 图论DFS:黑红树
Python_enjoy
博客等级 码龄4年 1201粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值