洛谷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 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
输入格式
每组测试数据第一行一个整数n(1 \le n \le 30)n(1≤n≤30)
接下来nn行,由00和11组成的n \times nn×n的方阵。
方阵内只有一个闭合圈,圈内至少有一个00。
//感谢黄小U饮品指出本题数据和数据格式不一样. 已修改(输入格式)
输出格式
已经填好数字22的完整方阵。
输入输出样例
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
说明/提示
1≤n≤30
关于思路,放在题解下面了
题解
#include<bits/stdc++.h>
using namespace std;
int a[35][35];
int b[35][35];
int c;
int dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
int n,z,m;
void dfs(int hh,int ha)
{
if(hh<0||hh>n+1||ha<0||ha>n+1||a[hh][ha]) return;
a[hh][ha]=1;
for(int i=0;i<4;i++)
dfs(hh+dx[i],ha+dy[i]);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>> b[i][j];
if(b[i][j]==0) a[i][j]=0;
else a[i][j]=2;
}
}
dfs(0,0); for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==0) cout<<2<<" ";
else cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
思路:
这道题还是要用DFS做
关于DFS的函数怎么写我就不多说了
关于主函数的内容,是这样的:
首先明确二维数组a和b分别代表什么:a代表的是方阵不同的地带的表示(墙体是2,墙外是1,墙内是0,这个待会就会提及了),b代表这个矩形方阵,而为了方便,我们把图中输入的“1”视为墙(不是说墙的表示是1,他是2),而我们的主要目的就是把在墙内和墙外的区别对待
输入二维数组b的时候,我们把墙表示为2,即a[i][j]=2,其余的空地我们把它看做0,即if(b[i][j]==0) a[i][j]=0,
接着就是dfs了,我们一个一个点的去遍历,当遇到墙的时候,就没法走,就只能从其他三个方向绕过这隔墙,所以墙内的画是永远然不到颜色的,即 if(撞到边界||已经遍历过) return ; 接着, a[i][j]=1;
那么我们就分离出了:墙内的是0;墙体是2;墙外的是1;
最后一步我们进行判断,if(a[i][j]==0) 给他染上色,即cout<<2,else (即墙体和墙外的)cout<<b[i][j](他们原来是啥现在就是啥)
然后就OK啦!
2022.3.6
洛谷P1162—填涂颜色的更多相关文章
- 洛谷 P1162 填涂颜色 DFS
P1162 填涂颜色 https://www.luogu.com.cn/problem/P1162 qaq搜索好抽象啊,蒟蒻表示难以理解,搞半天才做出来一道题,很挫败www 思路 染色法.找墙壁外的连 ...
- 洛谷 P1162 填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要 ...
- 洛谷 P1162 填涂颜色【DFS】
题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述 由数字 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 ...
- 洛谷—— P1162 填涂颜色
https://www.luogu.org/problem/show?pid=1162 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭 ...
- 洛谷 P1162 填涂颜色题解
题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...
- 洛谷P1162 填涂颜色【bfs】
题目链接:https://www.luogu.org/problemnew/show/P1162 题意: 有一个0和1组成的矩阵,一些1组成一个闭合圈,圈住一些0,现在要把被圈住的这些0变成2输出. ...
- 洛谷P1162 填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162 这道题是LITTLESUN写的第一道BFS哦! 对于这道题的的思路是把封闭图形外边的0标记一边,在最后 ...
- 洛谷 - P1162 - 填涂颜色 - 简单搜索
https://www.luogu.org/problemnew/show/P1162 在外面加一圈0把0连起来,然后把所有0换成2,再从(0,0)把连通的2全部改回来. 这也是一个判断内外圈的好办法 ...
- luogu P1162 填涂颜色 x
P1162 填涂颜色 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和 ...
随机推荐
- 2022寒假集训day6
day6上午还是做四道题T1区域[上机练习]1.编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目.如下图所示,在 10*10 ...
- Linux组管理
首先查看文件所有者.文件所在组等信息:ls -l 1.改变文件所有者:chown 用户名 文件名 执行 chown xm Hello.java 后,可以看到文件所有者现在是属于xm这个用户的了 2.改 ...
- [LeetCode]LCP 01. 猜数字
小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜.他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的guess数组为 小 ...
- netty系列之:channelHandlerContext详解
目录 简介 ChannelHandlerContext和它的应用 AbstractChannelHandlerContext DefaultChannelHandlerContext 总结 简介 我们 ...
- Oracle之SQL的简单查询
查询结构 --SQL语句的执行原理以及语法结构: /* SELECT * | 列名1[,列名2...] | 表达式 FROM 表名 [表的别名] WHERE 分组前的筛选条件 GROUP BY 列名1 ...
- Centos6.x安装之后的9件事
Centos6.x安装之后的9件事 这些不是必须都做的,只不过是我个人的习惯,在此记录一下. 1.修改yum源到国内 CentOS系统更换软件安装源 备份你的原镜像文件,以免出错后可以恢复. mv / ...
- 哈工大 计算机系统 实验七 TinyShell
所有实验文件可见github 计算机系统实验整理 实验报告 实 验(七) 题 目 TinyShell 微壳 计算机科学与技术学院 目 录 第1章 实验基本信息 - 4 - 1.1 实验目的 - 4 - ...
- Python:Scrapy(一) 基础知识与实例
学习自: Scrapy爬虫框架教程(一)-- Scrapy入门 - 知乎 Scrapy爬虫框架,入门案例(非常详细)_ck784101777的博客-CSDN博客_scrapy爬虫案例 爬虫框架Scra ...
- C语言刷数组题记录
讲解:https://mp.weixin.qq.com/s/weyitJcVHBgFtSc19cbPdw 二分法: 704. 二分查找 int search(int* nums, int numsSi ...
- C# Md5Hash
/// <summary> /// MD5 32位加密(大写) /// </summary> /// <param name="str">< ...