题目描述

由数字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. 【CF Round 434 B. Which floor?】

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  2. Reasons to use innodb_file_per_table

    When working with InnoDB, you have two ways for managing the tablespace storage: Throw everything in ...

  3. URAL1277 Cops and Thieves(最小割)

    Cops and Thieves Description: The Galaxy Police (Galaxpol) found out that a notorious gang of thieve ...

  4. Death Note

    注:本文系作者原创,但可随意转载. ********************************************************************************** ...

  5. Docker Community Edition for CentOS

    Docker CE for CentOS Docker CE for CentOS distribution is the best way to install the Docker platfor ...

  6. [Python]安装完pip、pygame后,仍然import pygame报错

    按照<python编程从入门到实践>上的教程下载了pygame的whl文件进行安装, 在cmd窗口里import pygame提示无错误,在IDEL里程序也能正常运行, 但是pycharm ...

  7. c++对拍实现

    直接上代码吧. #include<bits/stdc++.h> using namespace std; int main(){ while(1){ system("./cute ...

  8. bzoj3127/3697 [Usaco2013 Open]Yin and Yang

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3127 http://www.lydsy.com/JudgeOnline/problem.ph ...

  9. Android 性能优化 - 详解内存优化的来龙去脉

    前言 APP内存的使用,是评价一款应用性能高低的一个重要指标.虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精. 这一篇中我们将着重介绍Android的内存优化.本文的篇 ...

  10. [bzoj3994][SDOI2015]约数个数和-数论

    Brief Description 计算\(\sum_{i\leqslant n}\sum_{j\leqslant m}\sigma_0(ij)\). Algorithm Design 首先证明一个结 ...