首页 > 其他分享 >P1683 入门

P1683 入门

时间:2024-07-31 13:26:03浏览次数:14  
标签:P1683 入门 块砖 int st 桃花岛 瓷砖 安全

入门

题目描述

不是任何人都可以进入桃花岛的,黄药师最讨厌像郭靖一样呆头呆脑的人。所以,他在桃花岛的唯一入口处修了一条小路,这条小路全部用正方形瓷砖铺设而成。有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒气,那你就死翘翘了,我们认为是不安全的。你只能从一块安全的瓷砖上走到与他相邻的四块瓷砖中的任何一个上,但它也必须是安全的才行。

由于你是黄蓉的朋友,她事先告诉你哪些砖是安全的、哪些砖是不安全的,并且她会指引你飞到第一块砖上(第一块砖可能在任意安全位置),现在她告诉你进入桃花岛的秘密就是:如果你能走过最多的瓷砖并且没有死,那么桃花岛的大门就会自动打开了,你就可以从当前位置直接飞进大门了。

注意:瓷砖可以重复走过,但不能重复计数。

输入格式

第一行两个正整数 W W W 和 H H H,分别表示小路的宽度和长度。

以下 H H H 行为一个 H × W H\times W H×W 的字符矩阵。每一个字符代表一块瓷砖。其中,. 代表安全的砖,# 代表不安全的砖,@ 代表第一块砖。

输出格式

输出一行,只包括一个数,即你从第一块砖开始所能安全走过的最多的砖块个数(包括第一块砖)。

样例 #1

样例输入 #1

11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........

样例输出 #1

59

提示

数据规模与约定

对于全部的测试点,保证 1 ≤ W , H ≤ 20 1 \leq W,H\le 20 1≤W,H≤20。

code:

#include<iostream>
using namespace std;
const int N=30;
int h,w;//h行w列
char g[N][N];//存图
int res=0;//记录走过的瓷砖的个数
bool st[N][N];//记录瓷砖走没走过
//方向数组
int dx[]={0,-1,0,1,0};
int dy[]={0,0,1,0,-1};
void dfs(int x,int y){
    for(int i=1;i<=4;i++){
        int a=x+dx[i];
        int b=y+dy[i];
        if(a<1||a>h||b<1||b>w) continue;
        if(g[a][b]!='.') continue;
        if(st[a][b]) continue;
        st[a][b]=true;
        res++;
        dfs(a,b);
    }
}
int main(){
    cin>>w>>h;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cin>>g[i][j];
        }
    }
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            if(g[i][j]=='@'){
                st[i][j]=true;
                dfs(i,j);
            }
        }
    }
    res++;//第一块瓷砖也要加上
    cout<<res;
    return 0;
}

标签:P1683,入门,块砖,int,st,桃花岛,瓷砖,安全
From: https://blog.csdn.net/2301_80662593/article/details/140620434

相关文章

  • Flask框架入门:快速搭建轻量级Python网页应用
    转载: Flask框架入门:快速搭建轻量级Python网页应用1. Flask基础Flask是一个使用Python编写的轻量级Web应用框架。它的设计目标是让Web开发变得快速简单,同时保持应用的灵活性。Flask依赖于两个外部库:Werkzeug和Jinja2,Werkzeug作为WSGI工具包处理Web服务的底层细节,Jinja2作为......
  • 计算机入门和服务器入门知识总结
    一、计算机入门知识1.1什么是计算机是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备发明计算机的目标是代替人类去高效且高质量地完成工作。1.2计算机发展史第一代计算机(1946-1957)电子管时代第......
  • MySQL入门学习-设计优化.范式设计
        以下是关于MySQL入门学习中设计优化和范式设计的一些基本信息:一、设计优化:1.索引优化:  -选择合适的列创建索引,通常在经常用于查询、连接、排序的列上创建索引。  -避免在过多的列上创建索引,以免影响插入、更新和删除操作的性能。  -对于大型......
  • MySQL入门学习-设计优化.生成列
        在MySQL中,生成列(GeneratedColumn)是一种特殊的列类型,它的值是根据其他列的值或表达式计算得到的。生成列可以分为两种类型:存储生成列(StoredGeneratedColumn)和虚拟生成列(VirtualGeneratedColumn)。一、特点和使用方法:1.存储生成列:  -特点:    ......
  • go-zero中api从入门到大师
    api文件的学习在go-zero中,api文件可以说是整个项目最重要的一个文件,学好它,写好他,项目相当于已经完成了一半!接下来,我会详细说明.api是什么,以及怎么写先给个案例:typeLoginRequest{ UserNamestring`json:"userName"` Passwordstring`json:"password"`}typeUser......
  • 全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规
    全网最适合入门的面向对象编程教程:28类和对象的Python实现-Python编程原则、哲学和规范大汇总摘要:本文主要介绍了在使用Python进行面向对象编程时,Python异常处理的原则-“请求谅解,而非许可”,以及软件设计和Python的编程原则,同时介绍了PEP8规范。原文链接:FreakStud......
  • Java基础入门(第一章)
    1Java是什么:Java是一门非常优秀的计算机编程语言Java英文翻译为印尼爪哇岛,地名,因盛产咖啡而闻名,漫漫长夜、唯有咖啡陪伴程序员1991年诞生,最初叫Oak(橡树),1995年改名为Java,2000年前后,成为世界上最流行的编程语言,过去二十多年中首屈一指。语言,人与人交流沟通的表达方式。......
  • 【C++】入门基础
     1.命名空间1.1namespace的价值在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的......
  • python高性能计算:cython入门代码
    三种实现的对比:(1)纯pythonx.pydefis_prime(num):forjinrange(2,num):if(num%j)==0:returnFalsereturnTrueimporttimea=time.time()foriinrange(10,100000):is_prime(i)b=time.time()print(b-a)(2)x2.py......
  • NSSCTF web入门题鉴赏
    前言思来想去还是觉得web好玩一点哈哈,尝试过crypto更能懂那种痛楚[SWPUCTF2021新生赛]Do_you_know_httphttps://www.nssctf.cn/problem/385这道题就是简单的http协议刚开始是'WLLM'browser!这个题眼,于是我们上网络查询一下,发现useragency并不是它,那就需要我们去改一下us......