【洛谷习题】填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162
好久没写博客了,这次一写竟是道搜索模板题。可见我水平下降很快。。。
这道题虽然简单,但细节颇多,需要注意的东西不少。虽然是用搜索找连通块,但起点怎么找呢?其实找内部的点不如找外部的点,反正只是要把几个连通块区分开。本以为这样就可以对,实际实现时却忽略了两点,可能没有外部的点,即1占满了边界;可能不止3个连通块,外部点可能不连通。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<cstdio> 2 #include<queue> 3 using namespace std; 4 const int maxn=35; 5 const int mov[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; 6 int n,mt[maxn][maxn]; 7 struct point { 8 int x,y; 9 point(int x,int y):x(x),y(y) {} 10 }; 11 queue<point> q; 12 void bfs(int sx,int sy) { 13 q.push(point(sx,sy)); 14 while(!q.empty()) { 15 int nx=q.front().x,ny=q.front().y;q.pop(); 16 mt[nx][ny]=2; 17 for(int i=0;i<4;++i) { 18 int a=nx+mov[i][0],b=ny+mov[i][1]; 19 if(mt[a][b]||a<1||a>n||b<1||b>n) continue; 20 q.push(point(a,b)); 21 } 22 } 23 } 24 int main() { 25 scanf("%d",&n); 26 for(int i=1;i<=n;++i) 27 for(int j=1;j<=n;++j) scanf("%d",&mt[i][j]); 28 for(int i=1;i<=n;++i) { 29 if(!mt[1][i]) bfs(1,i); 30 if(!mt[i][1]) bfs(i,1); 31 if(!mt[n][i]) bfs(n,i); 32 if(!mt[i][n]) bfs(i,n); 33 } 34 for(int i=1;i<=n;++i) { 35 if(i!=1) putchar('\n'); 36 for(int j=1;j<=n;++j) { 37 if(j!=1) putchar(' '); 38 if(!mt[i][j]) printf("2"); 39 else if(mt[i][j]==1) printf("1"); 40 else printf("0"); 41 } 42 } 43 return 0; 44 }
AC代码
转载于:https://www.cnblogs.com/Mr94Kevin/p/9691914.html
【洛谷习题】填涂颜色相关推荐
- 洛谷P1162 填涂颜色(Python搜索)
P1162 填涂颜色https://www.luogu.com.cn/problem/P1162 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方 ...
- 洛谷 P1162 填涂颜色
填涂颜色 题目描述 由数字 000 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 111 构成,围圈时只走上下左右 444 个方向.现要求把闭合圈内的所有空间都填写成 222.例如:6×66\tim ...
- 洛谷p1162填涂颜色(dfs写法)
这道题本是放在试炼场bfs里的,但是我觉得dfs好写些 所以就用dfs过了 题目如下 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合 ...
- 洛谷 P1162 填涂颜色题解
题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...
- 洛谷 P1162 填涂颜色 C++ 深搜 染色法
题目描述 由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下: 0 ...
- 洛谷P1162 填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162 这道题是LITTLESUN写的第一道BFS哦! 对于这道题的的思路是把封闭图形外边的0标记一边,在最后 ...
- 洛谷 P1162 填涂颜色-dfs染色法
输入: 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 ...
- 洛谷 P1162填图颜色
洛谷 P1162填图颜色 题目链接 #include <bits/stdc++.h> using namespace std; int xx[] = {0, -1, 0, 1}; int ...
- 洛谷P4170 [CQOI2007]涂色 题解
洛谷P4170 [CQOI2007]涂色 题解 题目链接:P4170 [CQOI2007]涂色 题意: 假设你有一条长度为 555 的木板,初始时没有涂过任何颜色.你希望把它的 555 个单位长度分别 ...
- P1162 填涂颜色问题(广度优先搜索BFS)
# 填涂颜色 ## 题目描述 由数字 $0$ 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 个方向.现要求把闭合圈内的所有空间都填写成 2.例如:6*6$的方阵(n ...
最新文章
- 谈谈 Java 中自定义注解及使用场景
- TF-IDF算法原理介绍
- JavaBean组件的基本使用-语法
- Docker 初级教程
- 河南工业大学计算机网络技术,河南工业大学2019年硕士研究生入学信息科学与工程学院计算机网络自命题考试大纲...
- php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放
- 基于jQuery开发的javascript模板引擎-jTemplates
- 宅男、游戏、美女,一场不一样的技术公开课让你老泪纵横
- nginx location的命中过程
- 《C语言程序设计(第五版)谭浩强》学习笔记
- 速达服务器远程登录设置,ERP速达软件online远程客户端登录常见问题(三)
- 最新三网免挂码支付系统源码+免授权版
- GB BIG5 转码原理全解析
- raw os 之状态机编程
- python线程池,多线程
- The Development of Han Chinese’s Cuisine and Diet
- 广告学本科--现代管理学--[00107]
- 多传感器融合定位 第四章 点云地图构建及基于点云地图定位
- 疲惫!很疲惫(发发牢骚)
- 和快手大牛的技术面谈,附超全教程文档
热门文章
- php5.5 反序列化利用工具_Yii框架反序列化RCE利用链2
- php5.4.45的php.ini文件
- 计算机网络课程设计之电子邮件客户端程序设计与实现
- 操作系统学习之用C语言模拟CLOCK算法
- java递归解决百元百鸡_JS计算输出100元钱买100只鸡问题的解决方法
- Vue 项目调试总结
- Java笔记-编码方式创建kaptcha验证码
- C++笔记-ClassA a和ClassA a()的区别与联系
- Qt工作笔记-重写滚轮事件,实现界面的增加、减少(放大、缩小)
- Qt工作笔记-多线程时间服务应用