小d和超级泡泡堂(牛客)

简介: 小d和超级泡泡堂(牛客)

题目描述


小 DDD 在某天醒来发现自己穿越到了小游戏《超级泡泡堂》的世界,他得到了一份地图,一个技能和三个提示。


这个地图共有 nnn 行 mmm 列,行从上到下按 111 ~ nnn 编号,列从左到右按 111 ~ mmm 编号。地图上存在空地、石头、杂草。


这个技能是在自己当前所在位置放置一个不会对自己造成影响的炸弹,炸弹爆炸会产生火焰,火焰会向上下左右四个方向蔓延,如果火焰的蔓延方向上为空地,则会直接蔓延到空地并且在空地上开始继续蔓延,如果火焰的蔓延方向上为杂草,则会将杂草烧掉使其变为空地, 并且在新产生的空地继续蔓延,如果火焰蔓延方向上为石头,则无法继续朝这个方向蔓延,当然,火焰不可能蔓延到地图外。



三个提示分别是:


1、你可以向上下左右四个方向移动,如果那个方向上不是石头且不会移动到地图外。


2、你的技能只能使用一次。


3、你只有正确回答你最多能通过使用技能使多少杂草地变为空地才能够回到现实世界。


小 DDD 非常想要回去现实世界玩原神,请你帮助他计算出他最多能通过使用技能使多少杂草地变为空地。


注:当火焰蔓延到另一个地方将要继续蔓延时,蔓延方式等同于在该地方重新放置炸弹。 \textbf{ 注:当火焰蔓延到另一个地方将要继续蔓延时,蔓延方式等同于在该地方重新放置炸弹。 } 注:当火焰蔓延到另一个地方将要继续蔓延时,蔓延方式等同于在该地方重新放置炸弹。


输入描述:


第一行包含两个整数 n,m(1≤n,m≤1000)n, m(1\leq n,m\leq 1000)n,m(1≤n,m≤1000)。


接下来 nnn 行每行 mmm 个字符,其中 '.' 表示空地,'#' 表示石头,‘!' 表示杂草,‘@’ 表示小 DDD 当前所处位置。


输出描述:

输出一行包含一个整数表示他最多能通过使用技能使多少杂草地变为空地。

示例1


输入

复制4 4 ..!. .@.# !##! #!!!

4 4

..!.

.@.#

!##!

#!!!


输出

复制2

2

#include <iostream>
using namespace std;
static char A[1000][1000];
int cnt = 0;
void dfs(char A[1000][1000],int i,int j,int n,int m){
    if(i<0||j<0||i>=n||j>=m||A[i][j]=='#'||A[i][j]=='F'){
        return ;
    }
    if(A[i][j]=='!'){
        cnt++;
        A[i][j] = 'F';
    }
    A[i][j] = 'F';
    dfs(A,i-1,j,n,m);
    dfs(A,i,j-1,n,m);
    dfs(A,i+1,j,n,m);
    dfs(A,i,j+1,n,m);
}
int main(){
    int n,m;
    cin>>n>>m;
    for(int i = 0;i < n; i++){
        for(int j = 0;j < m; j++){
            cin>>A[i][j];
        }
    }
    for(int i = 0;i < n; i++){
        for(int j = 0;j < m; j++){
            if(A[i][j]=='@'){
                dfs(A,i,j,n,m);
            }
        }
    }
    cout<<cnt;
    return 0;
}

dfs求解。

相关文章
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
|
机器学习/深度学习 人工智能 计算机视觉
AIGC基础模型——Vision Transformer (ViT)
【1月更文挑战第12天】AIGC基础模型——Vision Transformer (ViT)
501 6
AIGC基础模型——Vision Transformer (ViT)
|
存储 JSON 前端开发
jwt超详细配置和教程
jwt超详细配置和教程
381 2
|
10月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
929 2
|
存储 数据采集 SQL
数据平台问题之数据资产管理混乱的问题如何解决
数据平台问题之数据资产管理混乱的问题如何解决
138 4
|
存储 SQL 算法
LeetCode第53题:最大子数组和【python 5种算法】
LeetCode第53题:最大子数组和【python 5种算法】
|
JavaScript
JS【详解】Symbol (含Symbol 作为属性名,静态方法for 和 keyFor,11 个内置的 Symbol 值)
JS【详解】Symbol (含Symbol 作为属性名,静态方法for 和 keyFor,11 个内置的 Symbol 值)
221 1
|
存储 机器学习/深度学习
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
238 0
|
缓存 资源调度 负载均衡
LTE-NR 双连接|带你读《5G无线网络规划与设计》之十二
LTE双连接扩展了载波聚合的应用,能够有效提升网络容量,并具有提高切换成功率、负载均衡等能力。3GPP 基于 LTE 双连接提出了 LTE-NR 双连接技术,定义了 4G、5G 紧密互操作的技术规范,开创性地将 RAT 间的互操作过程下沉至网络边缘。对于 5G 来说,基于 LTE-NR 双连接技术的非独立组网模式可使 5G核心网和接入网分步部署,有利于 5G 的快速部署和应用。
LTE-NR 双连接|带你读《5G无线网络规划与设计》之十二