首页 > 其他分享 >P1683 入门

P1683 入门

时间:2024-05-17 19:08:39浏览次数:37  
标签:P1683 入门 ny int ++ nx 瓷砖 安全

传送锚点:https://www.luogu.com.cn/problem/P1683

题目描述

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

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

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

59

提示

数据规模与约定

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

思路

一定要区分w、h,水平方向是w、纵方向是h

code

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
int w, h;//
const int maxn = 25;
int visited[maxn][maxn];//visited[i][j]为(坐标为(i,j))1代表访问过
char grid[maxn][maxn];//存储瓷砖内容
int res = 0;//统计最多砖块个数
int dx[4] = { 0, 0,1,-1 };//右、左、下、上
int dy[4] = { 1, -1, 0,0 };//右、左、下、上
void dfs(int x,int y) {//遍历的坐标
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i];
		int ny = y + dy[i];
		if (nx < 0 || nx >= w || ny < 0 || ny >= h)continue;
		if (visited[nx][ny])continue;
		if (grid[nx][ny] == '#') continue;//不安全的瓷砖
		visited[nx][ny] = 1;
		res++;
		dfs(nx, ny);
	}

}
int main()
{
	cin >> w >> h;
	for (int i = 0; i < w; i++) {
		scanf("%s", grid[i]);
	}
	for (int i = 0; i < w; i++) {
		for (int j = 0; j < w; j++) {
			if (grid[i][j] == '@') {
				visited[i][j] = 1;
				dfs(i, j);
			}
		}
	}
	res++;
	cout << res;
	
	return 0;
}

标签:P1683,入门,ny,int,++,nx,瓷砖,安全
From: https://www.cnblogs.com/6Luffy6/p/18198430

相关文章

  • vuejs3.0 从入门到精通——vite+vue3+ts 显示找不到模块“../views/HomeView.vue”或
    vite+vue3+ts显示找不到模块“../views/HomeView.vue”或其相应的类型声明。ts(2307)一、在根目录下的env.d.ts文件(没有就自己创建)二、在env.d.ts文件中添加以下代码declaremodule'*.vue'{importtype{DefineComponent}from'vue'constcomponent:DefineCo......
  • 图神经网络入门示例:使用PyTorch Geometric 进行节点分类
    基于图的神经网络是强大的模型,可以学习网络中的复杂模式。在本文中,我们将介绍如何为同构图数据构造PyTorchData对象,然后训练不同类型的神经网络来预测节点所属的类。这种类型的预测问题通常被称为节点分类。我们将使用来自BenedekRozemberczki,CarlAllen和RikSarkar于2019......
  • java01基础入门
    java01基础入门准备javac-versionjava-versioncd..//回到上一级勾选文件扩展名设置Path环境变量IDEA创建工程开发步骤project->module->package->class设置主题、字体快捷键注释关键字基本组成:由数字、字母、下划线(_)和美元符($)等组......
  • CommunityToolkit从入门到精通(详细版)
    MVVM基础 Model:负责存储数据,以及对数据的处理。View:负责展示数据,以及与用户的交互。ViewModel:负责将Model的数据在View中显示出来,同时也负责将View中的事件传递给Model。可以说,ViewModel是Model和View之间的桥梁。组件模型(ComponentModel)ObservableObject......
  • Django 自定义管理命令:从入门到高级
    title:Django自定义管理命令:从入门到高级date:2024/5/1618:34:29updated:2024/5/1618:34:29categories:后端开发tags:Django自定义命令入门教程高级技巧命令创建命令使用自定义管理第1章简介1.1 Django管理命令简介Django是一个流行的Python......
  • React-入门手册-全-
    React入门手册(全)原文:zh.annas-archive.org/md5/2B8E3D6DF41679F5F06756066BE8F7E8译者:飞龙协议:CCBY-NC-SA4.0前言诸如Angular和React之类的项目正在迅速改变开发团队构建和部署Web应用程序到生产环境的方式。在本书中,你将学习到使用React入门所需的基础知识,并应......
  • JavaSE入门学习
    Java入门学习目录Java入门学习Java特征和优势Java三大版本开发环境搭建JDK下载及安装配置环境变量HelloWorld及简单语法规则使用IDE开发1.创建一个Java项目(IDEA)2.在该项目src目录下new一个class文件3.编辑代码4.运行代码Java特征和优势简单性面向对象可移植性高性能......
  • ElasticSearch (ES从入门到精通一篇就够了)
    ES分布式搜索引擎注意:在没有创建库的时候搜索,ES会创建一个库并自动创建该字段并且设置为String类型也就是text什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elasticstack(ELK)?是以elasticsearch为核心的技术栈,包......
  • Windows下QEMU虚拟化探索:从入门到精通
    本文背景:大部分云电脑不会开启intelVT-X虚拟技术,导致VM、Vbox等都无法使用。就得靠搭建QEMU版的虚拟机了。一、QEMU简介QEMU是一款开源的虚拟化软件,可以模拟CPU以及其他硬件设备,使你在一台物理机器上运行多个虚拟机。QEMU支持广泛的操作系统,包括Windows、Linux、macOS等。二......
  • vue3的入门--setup
    代码量:200行以上博客量:1时间:2h vue2中的data和methods可以与setup并列写,但是:data和methods可以利用this调用setup中的数据而,setup中,不能调用data和methods中的数据<!--Person.vue--><template><divclass="person"><h2>姓名:{{name}}</h2>&......