P1162 填涂颜色(dfs染色问题)

本文介绍了一种用于在二维方阵中寻找并填充闭合圈的算法。通过深度优先搜索(DFS)遍历边界,将闭合圈内部的特定区域进行标记。使用C++实现,该算法能有效处理由0和1组成的矩阵,并将闭合圈内部的所有位置更新为2。

题目描述

由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向。现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=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(1 \le n \le 30)n(1≤n≤30)
接下来nn行,由00和11组成的n \times nn×n的方阵。

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

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

输出格式:
已经填好数字22的完整方阵。

输入输出样例

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

类似P1506的染色问题,只是用b数组来存染色块

#include <iostream>
#include<queue>
using namespace std;
int a[35][35],b[35][35];///数组b用来记录未染色的点
int n;
int X[4]={1,0,-1,0};
int Y[4]={0,1,0,-1};///增量数组又又又又又写错了,是','不是'.'
struct node{int x,y;}N;
bool check(int x,int y)
{
    if(x<0||y<0||x>=n||y>=n) return false;
    if(b[x][y]==1) return false;
    return true;
}
void dfs(int x,int y)
{
    if(check(x,y)==false) return ;
    for(int i=0;i<4;i++)
    {
        b[x][y]=1;
        int nx=x+X[i],ny=y+Y[i];
        dfs(nx,ny);
    }
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {cin>>a[i][j];b[i][j]=a[i][j];}}
    for(int i=0;i<n;i++)
    {
        dfs(0,i);dfs(n-1,i);dfs(i,0);dfs(i,n-1);
    }
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(b[i][j]!=1) a[i][j]=2;
    for(int i=0;i<n;i++)
    {
        int h=0;
        for(int j=0;j<n;j++)
        {
            if(h==1) cout<<" ";h=1;
            cout<<a[i][j];
        }
        cout<<endl;
    }
    return 0;
}

腐蚀检测数据集 数据集名称:腐蚀检测数据集 图片数量: - 训练集:347图片 - 验证集:23图片 - 测试集:16图片 总计:386工业场景图片 分类类别: - Corrosion(腐蚀):金属表面氧化或化学侵蚀导致的损伤区域,需精准识别以评估设备老化风险。 标注格式YOLO格式,包含多边形点坐标(分割任务)与边界框坐标(目标检测任务),支持实例分割及目标检测模型训练。 数据来源:工业设备、管道等场景图片,覆盖多样化腐蚀形态。 1. 工业设备健康监测系统: 集成至巡检机器人或监控系统,实时识别金属结构腐蚀区域,预警设备失效风险。 1. 基建安全评估工具: 用于桥梁、管道等设施的自动化锈蚀检测,辅助制定维护方案。 1. 料科学研究: 支持腐蚀过程分析算法开发,助力料耐久性学术研究。 1. 安防与风险管理: 部署于高风险环境(如化工厂),监控关键设备的腐蚀状态。 1. 任务适配性强: 同时提供实例分割(多边形标注)与目标检测(边界框标注)标签,兼容YOLO等主流框架。 支持腐蚀区域的像素级定位或快速区域检测任务。 1. 同时提供实例分割(多边形标注)与目标检测(边界框标注)标签,兼容YOLO等主流框架。 1. 支持腐蚀区域的像素级定位或快速区域检测任务。 1. 场景专业化: 聚焦单一腐蚀类别,标注数据高度统一,减少模型混淆风险。 覆盖工业常见腐蚀形态,提升模型在实际场景的泛化能力。 1. 聚焦单一腐蚀类别,标注数据高度统一,减少模型混淆风险。 1. 覆盖工业常见腐蚀形态,提升模型在实际场景的泛化能力。 1. 工业应用价值突出: 直接服务于设备寿命预测与预防性维护,降低工业事故概率。 标注格式简洁高效,可快速接入现有检测流水线。 1. 直接服务于设备寿命预测与预防性维护,降低工业事故概率。 1. 标注格式简洁高效,可快速接入现有检测流水线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值