P1162 填涂颜色
原题链接 https://www.luogu.org/problemnew/show/P1162
一道很水很简单的搜索题,好吧我还是交了4次才过的......
说一下简单的思路:
首先输入n*n的矩阵,包含0和1,存入map数组里;
然后我们在开一个a数组,可以对它进行如下编译:如果map数组对应的元素为1,则a数组存1,其余的存0;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
cin>>map[i][j];
if(map[i][j]==) a[i][j]=;
else a[i][j]=;
}
既然有且仅有一个环形闭合圈,那么我们不妨从头开始搜,搜到一个不为0的数(其实就是墙)就返回,否则就把它染成2(既然没碰到墙,那么肯定在圈外)
这样一来原先为0的位置就是环形圈内的元素,输出的时候把它改成2就好啦!
但是......如果一开始的map[1][1]就是1(墙)咋办.......我一开是也忘了这一点,因此WA了3个点.....
解决的办法就是:
既然我们开的是一个1~n的n*n矩阵,所以我们再从外面套上一环,即矩阵变为0~n+1的(n+1)*(n+1)矩阵
这样一来不管你是(1,1),(1,n),(n,1),(n,n)这些角上的元素还是魑魅魍魉妖魔都可以被遍历到啦qaq
好了,下面上代码:
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,map[][],a[][];
int dx[]={,,,-},dy[]={,,-,};
void search(int x,int y)
{
int i;
if(x<||x>n+||y<||y>n+||a[x][y]!=) //如果跑出去了或撞墙则返回
return ;
a[x][y]=; //在环形圈外染成2做下标记
for(i=;i<;i++) //向四个方向遍历
search(x+dx[i],y+dy[i]);
}
int main()
{
cin>>n;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
cin>>map[i][j];
if(map[i][j]==) a[i][j]=; //同样给一个变动数组a做上标记
else a[i][j]=;
}
search(,); //从(0,0)开始遍历
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(a[i][j]==) cout<<<<" "; //a数组中的0元素就是需要被染成2的地方
else cout<<map[i][j]<<" "; //其他照常输出
}
cout<<endl;
}
return ;
}
P1162 填涂颜色的更多相关文章
- luogu P1162 填涂颜色 x
P1162 填涂颜色 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和 ...
- 洛谷 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—填涂颜色
这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...
- P1162 填涂颜色 洛谷
题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和涂色后的方阵如下: 0 ...
- 洛谷—— 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输出. ...
随机推荐
- [Nodejs] node写个hello,world
http 模块 与 hello world hello world let http = require("http"); http .createServer((request, ...
- GraphQL基础篇
最近参与了一个大型项目,大型项目随着系统业务量的增大,不同的应用和系统共同使用着许多的服务接口API,而随着业务的变化和发展,不同的应用对相同资源的不同使用方法最终会导致需要维护的服务API数量呈现爆 ...
- h5页面 video暂停播放 视频控件 以及当前页面只有一个可以播放效果
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- vue 项目中引用百度地图
新建map.js export const BaiduMap = { init: function() { const BMapURL = 'https://api.map.baidu.com/api ...
- js 更改对象属性名
来自:https://segmentfault.com/q/1010000011923504 侵删 [ { "Id":"3972679ef2c04151972b376dd ...
- 使用VC建立网络连接并访问网络资源
目录 1. 提出问题 2. 解决方案 1. 提出问题 在windows下可以通过系统操作,将局域网的资源映射到本地,从而实现像本地数据一样访问网络资源.实际上这些步骤也可通过代码调用win32函数实现 ...
- 渐进式Web应用程序的深入概述
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://www.grapecity.com.cn/blogs/wijmo-depth-ove ...
- Ajax - Apache安装配置
apache安装配置 1.安装wamp2.配置根路径3.默认的网站根路径是安装目录的www子目录,如果不想使用默认目录,可以自己配置.配置方式如下: --找到文件wamp\bin\apache\Apa ...
- Chart.js 與 ASP.NET MVC 整合應用
Chart.js 是一套開放原始碼的「圖表」繪製函式庫,和其他第三方的圖表工具相比,Chart.js 的特色如下: 支援 HTML 5.響應式網頁 (RWD, Responsive Web Desig ...
- Windows下Oracle 11g的安装
Windows下Oracle 11g的安装 Windows下Oracle 11g的安装: Windows:64位, Oracle 11g版本:win64_11gR2_database_1of2(安装包 ...