被围绕的区域c++

题目

 链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

输入

4 4
XXXX
XOOX
XOXX
XXOX

 输出

XXXX
XXXX
XXXX
XXOX

思路

 由题知边界上的"O"和 与边界的"O"相连的"O"不会被标记,我们可以用一个数组st[][]标记这些区域。然后未被标记的都输出为"X"。标记的方法是深度优先搜索或者广度优先搜索。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 210;
bool st[N][N];//标记某块区域是否会被填充为"X"
string s[N];
int n, m;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};

void dfs(int x, int y)
{
    st[x][y] = true;
    
    for (int i = 0; i < 4; i ++)
    {
        int tx = x + dx[i], ty = y + dy[i];
        if (tx >= 0 && tx < n && ty >= 0 && ty < m && !st[tx][ty] && s[tx][ty] == 'O')
        dfs(tx, ty);
    }
}


int main()
{
    cin >> n >> m;
    
    for (int i = 0; i < n; i ++)
        cin >> s[i];
    
    for (int i = 0; i < m; i ++)
        if (!st[0][i] && s[0][i] == 'O')
            dfs(0, i);
    
    for (int i = 0; i < n; i ++)
        if (!st[i][m - 1] && s[i][m - 1] == 'O')
            dfs(i, m - 1);
            
    for (int i = m - 1; i >= 0; i --)
        if (!st[n - 1][i] && s[n - 1][i] == 'O')
        dfs(n - 1, i);
    
    for (int i = n - 1; i >= 0; i --)
        if (!st[i][0] && s[i][0] == 'O')
        dfs(i, 0);
    
    for (int i = 0; i < n; i ++)
    {
        for (int j = 0; j < m; j ++)
            if (!st[i][j])
                cout << "X";
        else cout << "O";
        puts("");
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot项目如何打包成war包,并部署在tomcat上运行

项目场景&#xff1a; 正常情况下&#xff0c;我们开发 SpringBoot 项目&#xff0c;由于内置了Tomcat&#xff0c;所以项目可以直接启动&#xff0c;部署到服务器的时候&#xff0c;直接打成 jar 包&#xff0c;就可以运行了。 有时我们会需要打包成 war 包&#xff0c;放入外…

23.1 微服务理论基础

23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略&#xff0c;围绕"云-管-端"协同的新ICT技术架构&#xff0c;打造的业界覆盖ICT领域最广的认证体系&#xff0c;包含"ICT技术架构认证"、"ICT开发者…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之布局更新动画

概述 动画的原理是在一个时间段内&#xff0c;多次改变UI外观&#xff0c;由于人眼会产生视觉暂留&#xff0c;所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧&#xff0c;对应一次屏幕刷新&#xff0c;而决定动画流畅度的一个重要指标就是帧率FPS&#x…

怎么看一手伦敦银多少钱?

做伦敦银投资的朋友需要搞清楚“一手伦敦银多少钱”的问题&#xff0c;这也是伦敦银交易的基础问题。为什么需要搞清楚这个基础问题呢&#xff1f;有些基础问题我们不需要搞懂&#xff0c;但是关于一手伦敦银多少钱却需要搞清楚&#xff0c;因为这决定了投资者的资金利用率。 关…

Java-Java基础学习(1)-重写和多态对比分析

Java中的重写&#xff08;Override&#xff09;和多态&#xff08;Polymorphism&#xff09;是两个核心概念&#xff0c;它们在面向对象编程中扮演着非常重要的角色。下面我将对这两个概念进行详细的对比分析&#xff0c;包括它们的区别、联系以及应用场景&#xff0c;并附上相…

为什么关掉了公众号留言功能?

为什么公众号没有留言功能&#xff1f;根据要求&#xff0c;自2018年2月12日起&#xff0c;新申请的微信公众号默认无留言功能。有些人听过一个说法&#xff1a;公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

2024年阿里云服务器所在机房位置详细说明

阿里云服务器地域和可用区有哪些&#xff1f;阿里云服务器地域节点遍布全球29个地域、88个可用区&#xff0c;包括中国大陆、中国香港、日本、美国、新加坡、孟买、泰国、首尔、迪拜等地域&#xff0c;同一个地域下有多个可用区可以选择&#xff0c;阿里云服务器网aliyunfuwuqi…

Linux应用 线程同步之自旋锁

1、概念 1.1 定义 自旋锁&#xff08;Spinlock&#xff09;是一种特殊的锁机制&#xff0c;当线程尝试获取锁而锁不可用时&#xff0c;线程会进入忙等待&#xff08;即循环检查锁是否可用&#xff09;&#xff0c;而不是进入睡眠状态。这种机制适用于锁持有时间非常短的场景&…

深度学习指标| 置信区间、Dice、IOU、MIOU、Kappa

深度学习部分指标介绍 置信区间混淆矩阵DiceIOU和MIOUKappa 置信区间 95%CI指标 读论文的时候&#xff0c;常会看到一个“95%CI”的评价指标。 其中CI指的是统计学中的置信区间&#xff08;Confidence interval&#xff0c;CI&#xff09;。在统计学中&#xff0c;一个概率样…

用python写网络爬虫:2.urllib库的基本用法

文章目录 urllib库抓取网页data参数timeout参数更灵活地配置参数登录代理Cookies 参考书籍 建议新入门的小伙伴先看我同一专栏的文章&#xff1a;用python写网络爬虫&#xff1a;1.基础知识 urllib库 urllib是python中一个最基础的HTTP库&#xff0c;一般是内置的&#xff0c;…

Linux网络基础2

目录 实现网络版本计算器 自己定协议实现用json协议实现 重谈OSI七层模型HTTP协议 域名介绍url介绍HTTP请求和响应 实现一个简易的HTTP服务器 实现简易Http服务器初级版实现简易Http服务器中级版 实现一个简易的HTTP服务器最终版 请求方法HTTP状态码HTTP常见的Header 实现网…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— Progress进度条组件

概述 Progress为进度条组件&#xff0c;用于显示各种进度。 参数 Progress组件的参数定义如下 Progress(options: {value: number, total?: number, type?: ProgressType})● value value属性用于设置当前进度值。 ● total total属性用于设置总值。 ● type type属…

加拿大光量子计算公司Xanadu入局英国多企业量子合作计划

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨沛贤 深度好文&#xff1a;1200字丨8分钟阅读 英国航空发动机制造商罗尔斯罗伊斯&#xff08;Rolls-Royce&#xff09;、英国量子计算公司Riverlane和加拿大量子计算公…

【赠书】从深度学习到图神经网络:模型与实践

文章目录 赠书&#xff1a;《从深度学习到图神经网络&#xff1a;模型与实践》一、编辑推荐二、内容简介三、作者简介张玉宏杨铁军 四、精彩书评五、目录第1章 图上的深度学习 11.1 人工智能与深度学习 21.2 图神经网络时代的来临 61.3 图数据处理面临的挑战 91.4 图神经网络的…

AS-V1000视频监控平台如何加强系统安全,满足等保2.0规范要求

目 录 一、概述 &#xff08;一&#xff09;信息安全技术网络安全等级保护标准 &#xff08;二&#xff09;解读 1、等级保护工作的内容 2、等级保护的等级划分 3、不同等级的安全保护能力 第一级安全保护能力 第二级安全保护能力 第三级安全保护能力 第…

电子科技大学链时代工作室招新题C语言部分---题号D

1. 题目 这道题大概的意思就是对一个整形数组的元素进行排序&#xff0c;然后按新的顺序打印原本的下标&#xff1b; 例如&#xff0c;在题目给出的Note部分&#xff0c;{a1, a2, a3, a4, a5}进行排序之后变为了{a2, a1, a4, a3, a5}&#xff0c;于是输出2 1 4 3 5。 排序的规则…

MyBatisPlus中MetaObjectHandler的使用

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 起因是公司一个同事接到需求,让把一条数据录入时createTime字段,设置为…

DM数据库(docker)

docker安装 安装必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 配置阿里云Docker Yum源: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更新yum缓存 yum makecache fast 安装docker-CE: y…

抛弃Superhuman?这些替代方案让你眼前一亮!

Superhuman是一个极好的人工智能工具在电子邮件助理领域。根据SimilarWeb的最新统计&#xff0c;它在全球网站排名中排名第21980位&#xff0c;月访问量为1751798。然而市场上还有许多其他优秀的选择。为了帮助您找到最适合您需求的解决方案&#xff0c;我们为您精心挑选了10种…