• P1162 填涂颜色


    题目描述

    由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=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。其中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

    #include<bits/stdc++.h>
    using namespace std;
    struct pos
    {
        int x;
        int y;
    };
    bool mark[32][32];
    int pic[32][32],dx[]= {0,0,1,-1},dy[]= {1,-1,0,0},n;
    queue<pos>q;
    void bfs(int x,int y)
    {
        int tx,ty;
        q.push(pos{x,y});
        mark[x][y]=true;
        while(!q.empty())
        {
            tx=q.front().x;
            ty=q.front().y;
            q.pop();
            for(int i=0; i<4; i++)
            {
                if(tx+dx[i]<0||ty+dy[i]<0||tx+dx[i]>n+1||ty+dy[i]>n+1||mark[tx+dx[i]][ty+dy[i]])continue;
                q.push(pos{tx+dx[i],ty+dy[i]});
                mark[tx+dx[i]][ty+dy[i]]=true;
            }
        }
    }
    int main()
    {
        memset(pic,0,sizeof(pic));
        memset(mark,0,sizeof(mark));
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cin>>pic[i][j];
                mark[i][j]=pic[i][j];
            }
        }
        bfs(0,0);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(mark[i][j])cout<<pic[i][j]<<" ";
                else cout<<"2"<<" ";
            }
            cout<<endl;
        }
    }
  • 相关阅读:
    文件处理
    三元运算
    python 第二章 二进制运算、字符编码、数据类型
    python 第一章 基础语法
    刷题-力扣-611. 有效三角形的个数
    刷题-力扣-581. 最短无序连续子数组
    刷题-力扣-LCP 07. 传递信息
    刷题-力扣-1833. 雪糕的最大数量
    刷题-力扣-168. Excel表列名称
    刷题-力扣-337. 打家劫舍 III
  • 原文地址:https://www.cnblogs.com/sphreez/p/8610912.html
Copyright © 2020-2023  润新知