Acwing 1113. 红与黑 BFS与DFS

题目描述

有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。

你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。

请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

输入格式

输入包括多个数据集合。

每个数据集合的第一行是两个整数 W W W H H H,分别表示 x x x 方向和 y y y 方向瓷砖的数量。

在接下来的 H H H 行中,每行包括 W W W 个字符。每个字符表示一块瓷砖的颜色,规则如下

1)‘.’:黑色的瓷砖;
2)‘#’:红色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。

当在一行中读入的是两个零时,表示输入结束。

输出格式

对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

数据范围

1 ≤ W , H ≤ 20 1≤W,H≤20 1W,H20

输入样例:

6 9 
....#. 
.....# 
...... 
...... 
...... 
...... 
...... 
#@...# 
.#..#. 
0 0

输出样例:

45

BFS代码

import java.util.*;
class Main
{public static class Point{int x;  //这里不能是static int,否则x的值会变int y;public Point(int x,int y){this.x=x;this.y=y;}}public static int N=25;public static char[][] map = new char[N][N];public static int w,h;public static void main(String[] args){Scanner sc = new Scanner(System.in);while(true){w=sc.nextInt();h=sc.nextInt();if(w==0 && h==0)    break;Point start = new Point(-1,-1);  //定义起点for(int i=0;i<h;i++){map[i]=sc.next().toCharArray();for(int j=0;j<w;j++){if(map[i][j]=='@'){start = new Point(i,j);  //得到起点}}}System.out.println(bfs(start));  //宽搜}}public static int bfs(Point start){Queue<Point> queue = new LinkedList<>();queue.add(start);int cnt=0;int dx[] = {1,-1,0,0};  //四个方向int dy[] = {0,0,1,-1};boolean[][] isVisited = new boolean[N][N];  //记录是否走过while(!queue.isEmpty()){Point newPoint = queue.poll();for(int i=0;i<4;i++){int x=newPoint.x+dx[i];int y=newPoint.y+dy[i];if(x>=0 && x<h && y>=0 && y<w && map[x][y]=='.' && !isVisited[x][y])  //如果能走{isVisited[x][y]=true;cnt++;queue.add(new Point(x,y));}}}return cnt+1;}
}

DFS代码

import java.util.*;
class Main
{public static int N=25;public static char[][] map = new char[N][N];public static int w,h;public static int dx[] = {1,-1,0,0};  //四个方向public static int dy[] = {0,0,1,-1};public static void main(String[] args){Scanner sc = new Scanner(System.in);while(true){w=sc.nextInt();h=sc.nextInt();if(w==0 && h==0)    break;int x=-1,y=-1;  //定义起点for(int i=0;i<h;i++){map[i]=sc.next().toCharArray();for(int j=0;j<w;j++){if(map[i][j]=='@'){x=i;y=j;  //得到起点}}}System.out.println(dfs(x,y));  //深搜}}public static int dfs(int x,int y){map[x][y]='#';  //变成不能走的红色int cnt=1;for(int i=0;i<4;i++){int xt=x+dx[i];int yt=y+dy[i];if(xt>=0 && xt<h && yt>=0 && yt<w && map[xt][yt]=='.')  //如果能走{cnt+=dfs(xt,yt);}}return cnt;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七十九天 WAF攻防-漏洞发现协议代理池GobyAWVSXray

第79天 WAF攻防-漏洞发现&协议&代理池&Goby&AWVS&Xray 知识点&#xff1a; 1、Http/s&Sock5协议 2、Awvs Xray&Goby代理 3、Pxoxifier进程代理使用 4、Safedog&BT&Aliyun防护 演示案例&#xff1a; Awws漏扫-Sadedog-白名单-内置 Awws漏…

webpack5:基本概念整理

写在前头&#xff1a;这篇文章只是我个人在学习过程中对webpack文档的简单总结&#xff0c;更多详细信息请在官网阅读。 一、webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口…

leetcode热题100训练计划

路径总和 题目 思路 没思路&#xff0c;试试递归。 先分类讨论 算上本身结点&#xff0c;在递归里搜左右子树不算本身结点&#xff0c;在左子树或右子树里递归搜 终止条件 当前结点为空或者是当前已经是目标数 代码 class Solution {public int pathSum(TreeNode root, in…

鸡肋的Git

1.前言 对于大多数开发人员来说&#xff0c;我们大多数在学习或者工作过程中只关注核心部分&#xff0c;比如说学习Java&#xff0c;可能对于大多数人而言一开始都是从Java基础学起&#xff0c;然后408&#xff0c;Spring&#xff0c;中间件等&#xff0c;当你发现很多高深的技…

开源的Java报表库JasperReports介绍

JasperReports 是一个流行的开源 Java 报表库&#xff0c;它允许开发人员创建丰富的、基于 Java 的报表&#xff0c;这些报表可以与多种数据源交互&#xff0c;并且可以很容易地集成到 Java 应用程序中。JasperReports 提供了丰富的功能&#xff0c;包括数据可视化、图表、子报…

Node.js与Webpack笔记(二)

上一篇&#xff1a;Node.js与Webpack笔记&#xff08;一&#xff09;-CSDN博客 Webpack模块打包工具 1.Webpack简介以及体验 webpack是一个静态模块打包工具&#xff0c;从入口构建依赖图&#xff0c;打包有关的模块&#xff0c;最后用于展示你的内容 静态模块&#xff1a;编写…

统计接口调用耗时情况设计思路(大厂面试题)

gateway统计接口调用耗时情况设计思路&#xff08;大厂面试题&#xff09; 详情视频可以去看尚硅谷2024周阳老师的springCloud P86 知识出处自定义全局过滤器官网https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-combined-global-filter-…

vue结合vue-electron创建应用程序

这里写自定义目录标题 安装electron第一种方式&#xff1a;vue init electron-vue第二种方式&#xff1a;vue add electron-builder 启动electron调试功能&#xff1a;background操作和使用1、覆盖窗口的菜单上下文、右键菜单2、监听关闭事件、阻止默认行为3、创建悬浮窗口4、窗…

C/C++蓝桥杯之模拟法问题

模拟法&#xff0c;顾名思义&#xff0c;就是利用计算机模拟问题的求解过程&#xff0c;从而得到问题的解&#xff0c;模拟法由于简单&#xff0c;因此又被称为"不是算法的算法"。 模拟法是学习算法的基础&#xff0c;通过模拟可以学习编程的各类技巧&#xff0c;提…

css 背景图片居中显示

background 简写 background: #ffffff url(https://profile-avatar.csdnimg.cn/b9abdd57de464582860bf8ade52373b6_misnice.jpg) center center / 100% no-repeat;效果如图&#xff1a;

Docker安装shell脚本

#!/bin/sh # 1、查看安装过的docker&#xff1a; dockerlistyum list installed | grep docker dlength${#dockerlist[]} ditem${dockerlist[0]} # 2、卸载docker&#xff1a; #for loop for ditem in ${dockerlist[]} do echo yum remove -y ${ditem} echo "remo…

关于手机是否支持h264的问题的解决方案

目录 现象 原理 修改内容 现象 开始以为是手机不支持h264的编码 。机器人chatgpt一通乱扯。 后来检查了下手机&#xff0c;明显是有h264嘛。 终于搞定&#xff0c;不枉凌晨三点起来思考 原理 WebRTC 默认使用的视频编码器是VP8和VP9&#xff0c;WebRTC内置了这两种编码器…

Centos 安装 redis【最简单】

Centos7 使⽤ yum 安装 ⾸先安装 scl 源, 再安装 redis &#xff08;因为 Centos7 yum 提供的软件包只有 3.0 版本的 Redis &#xff0c;太老了&#xff0c;我们要安装 redis 5 系列的&#xff09; yum install centos-release-scl-rh yum install rh-redis5-redis 创建符号…

15-单片机烧录FreeTOS操作系统后,程序的执行流程

任务创建 1、在系统上电后&#xff0c;第一个执行的是启动文件由汇编语言编写的复位函数 通过复位函数来初始化系统的时钟&#xff0c;然后再执行__main,初始化系统的堆和栈&#xff0c;然后跳转到main函数 2、在main函数中可以直接进行任务创建操作 因为在FreeRTOS中会自动…

GSEA -- 学习记录

文章目录 brief统计学原理部分其他注意事项转录组部分单细胞部分 brief 上一篇学习记录写了ORA&#xff0c;其中ORA方法只关心差异表达基因而不关心其上调、下调的方向&#xff0c;也许同一条通路里既有显著高表达的基因&#xff0c;也有显著低表达的基因&#xff0c;因此最后…

解决问题的九大步骤

1.明确问题&#xff1a;确保准确理解问题的本质和范围&#xff0c;明确问题的背景和相关信息。 2.收集信息&#xff1a;搜集相关数据、资料和信息&#xff0c;了解问题的各个方面&#xff0c;为解决问题做准备。 3.分析问题&#xff1a;对问题进行深入分析&#xff0c;找出问…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…

990-44产品经理:Different types of Ethical Theories 不同类型的伦理理论

SLIDE 1 – INTRODUCTORY SLIDE 幻灯片1-介绍性幻灯片 Ethical theories provide part of the decision-making foundation for Decision Making When Ethics Are In Play because these theories represent the viewpoints from which individuals seek guidance as they mak…

「Vue3系列」Vue3 组合式 API 生命周期钩子

文章目录 一、Vue3 组合式 API 生命周期钩子1. onMounted2. onUnmounted3. onBeforeMount4. onUpdated5. onBeforeUpdate6. onErrorCaptured7. onActivated8. onDeactivated 二、Options API 和 Composition API 之间的映射三、组合式 API四、相关链接 一、Vue3 组合式 API 生命…

2024.2.3 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 禾赛科技2024届春招全面开启&#xff01; 校招 | 禾赛科技2024届春招全面开启&#xff01; 2、校招 | 格力电器2024届春招简历可投递 校招 | 格力电器2024届春招简历可投递 3、…