题目描述

由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和涂色后的方阵如下:

0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 1 0 0 1 1 1 1

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

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

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

1 1 1 1 1 1 1 1 1 1 1 1

输入输出格式

输入格式:

每组测试数据第一行一个整数:n。其中n(1<=n<=30)

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

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

//感谢黄小U饮品指出本题数据和数据格式不一样. 已修改(输入格式)

输出格式:

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

输入输出样例

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

说明

1<=n<=30

题解

相信刚刚看这个题的人都很懵逼,之后看了下题解 , 也没看懂别人的代码,主要就是一句话, 不用找圈内的2,只需要找圈外的0就好了

然后 这个题就变得和水池数目差不多了 = = 一个搜索的方法

#include<iostream>
#include<cmath>
#include <cstring>
using namespace std;
][];
][];
][];    //主要作用就是标记   ,加快下速度, 要保持好习惯
int n;
void dfs(int x,int y)    //和经典简单搜索的水池数目一样的搜索方法
{
    ) return ;
    dp[x][y]=;
    p[x][y]=';    //标记连在一起的0
    >&&y>&&x+<=n&&y<=n&&d[x+][y]==,y);
    &&y->&&x<=n&&y-<=n&&d[x][y-]==);
    >&&y>&&x-<=n&&y<=n&&d[x-][y]==,y);
    &&y->&&x<=n&&y-<=n&&d[x][y-]==);
}
int main()
{
    while(cin>>n)
    {
        memset(dp,,sizeof(dp));
        memset(d,',sizeof(d));
        ;i<=n;i++)
        {
            ;j<=n;j++)
            {
                cin>>d[i][j];
            }
        }
        memset(p,',sizeof(p));     //主要就是这一步智商比较高
        ;i<=n;i++)
        {
            ;j<=n;j++)
            {
                ';
            }
        }
        ;i<=n+;i++) dfs(,i);            //四个循环  查四个临界的0, 然后搜圈外的0
        ;i<=n+;i++) dfs(i,);
        ;i<=n+;i++) dfs(n+,i);
        ;i<=n+;i++) dfs(i,n+);
        ;i<=n;i++)
        {
            ;j<=n;j++)
            {
                cout<<p[i][j]<<' ';
            }
            cout<<endl;
        }
    }
} 
从边缘DFS,把圈外的0都记录下,最后没记录的就是圈内的0,不过一开始没想到。。。

#include<cstdio>
#include<iostream>
using namespace std;
][],vis[][];//大小n*n,图,是否访问过
void dfs(int i,int j)//求联通块
{
     ||i>n || j< || j>n)return;
    vis[i][j]=;
    dfs(i-,j);dfs(i+,j);dfs(i,j+);dfs(i,j-);
}
int main()
{
    cin>>n;
    ;i<=n;i++);j<=n;j++)scanf("%d",&map[i][j]);
//贪心,从边缘DFS一定能把所有外面的0都访问过
    ;i<=n;i++){dfs(,i);dfs(n,i);}
    ;i<n;i++){dfs(i,);dfs(i,n);}
    ;i<=n;i++)
    {
        ;j<=n;j++)); :);
        cout<<"\n";
    }
    ;
}

P1162 填涂颜色 洛谷的更多相关文章

  1. 填涂颜色 洛谷 p1162

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

  2. 洛谷 P1162 填涂颜色 DFS

    P1162 填涂颜色 https://www.luogu.com.cn/problem/P1162 qaq搜索好抽象啊,蒟蒻表示难以理解,搞半天才做出来一道题,很挫败www 思路 染色法.找墙壁外的连 ...

  3. luogu P1162 填涂颜色 x

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

  4. 洛谷P1162—填涂颜色

    这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...

  5. 洛谷 P1162 填涂颜色

    题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要 ...

  6. 洛谷 P1162 填涂颜色【DFS】

    题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述 由数字 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 ...

  7. 洛谷—— P1162 填涂颜色

    https://www.luogu.org/problem/show?pid=1162 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭 ...

  8. 洛谷 P1162 填涂颜色题解

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

  9. 洛谷P1162 填涂颜色【bfs】

    题目链接:https://www.luogu.org/problemnew/show/P1162 题意: 有一个0和1组成的矩阵,一些1组成一个闭合圈,圈住一些0,现在要把被圈住的这些0变成2输出. ...

随机推荐

  1. AOJ.559 丢失的数字

    丢失的数字 Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 1552 Submission Accepted: 273 Descri ...

  2. ubuntu使用su切换root用户提示“认证失败”

    在虚拟机上安装了ubuntu,安装时提示设置密码,也设置了,但是在终端操作时,遇到权限不够的问题,于是就想到就是要切换root用户,获取最高权限. 当我使用 su 切换到root用户时,提示我输入密码 ...

  3. [hdu 2298] 物理推导+二分答案

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2298 #include<bits/stdc++.h> using namespace st ...

  4. POJ2699:The Maximum Number of Strong Kings(枚举+贪心+最大流)

    The Maximum Number of Strong Kings Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2488 ...

  5. ng4转义html

    https://stackoverflow.com/questions/31548311/angular-html-binding <div [innerHTML]="content& ...

  6. rsync安装使用详解

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬 ...

  7. C#弱引用

    加菲猫 Just have a little faith. C#弱引用 .NET框架提供了另一有趣的特色,被用于实现多样的高速缓存.在.NET中弱引用通过System.WeakReference类实现 ...

  8. JS学习笔记之页面信息滚动效果

    效果截图: 1.无缝滚动效果 JS代码: <script> window.onload=function(){ var oInfobox=document.getElementById(' ...

  9. 「6月雅礼集训 2017 Day1」看无可看

    [题目大意] 给出n个数,a[1]...a[n],称作集合S,求

  10. openstack 问题澄清

    1. neutron中plugin与agent是一一对应的吗? 在不使用ml2时,plugin与agent一一对应,如ovs-plugin与ovs-agent:当使用ml2 plugin时,该plug ...