深度遍历-牛牛的果实迷宫

目录

一、问题描述

二、解题思路

1.返回格式

2.使用深度遍历

3.注意上下左右的实现方式

三、代码实现

四、刷题链接


一、问题描述

二、解题思路

1.返回格式

这个题目的问题返回格式是Point(x,y);x代表最短路径距离,y表示最短路径数量

如果没有从S->E的通路则返回new Point(-1,-1)

2.使用深度遍历

这里巧妙地将遍历过后的位置元素设为'T',避免重复访问产生回路,等dfs完成后将该位置元素还原为'.',方便上层递归调用尝试其他的方案。

3.注意上下左右的实现方式

    int[] dx={0,0,-1,1};//上下左右int[] dy={1,-1,0,0};

这里x指的列,y指的行,所以dx指的上下左右对应列变化,dy指的上下左右对应行的变化

三、代码实现

import java.util.*;/** public class Point {*   int x;*   int y;*   public Point(int x, int y) {*     this.x = x;*     this.y = y;*   }* }*/public class Solution {int minLen=Integer.MAX_VALUE;//记录最短路径距离int pathNum=0;//记录最短路径数量int[] dx={0,0,-1,1};//上下左右int[] dy={1,-1,0,0};int rowLen=0,colLen=0;/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param forest char字符型二维数组 * @return Point类*/public Point findPath (char[][] forest) {rowLen=forest.length;colLen=forest[0].length;//定位牛牛起始位置for(int i=0;i<rowLen;i++){for(int j=0;j<colLen;j++){if(forest[i][j]=='S'){dfs(forest,i,j,0);break;}}}if(pathNum==0){return new Point(-1,-1);}else{return new Point(minLen,pathNum);}}public void dfs(char[][] forest,int y,int x,int steps){if(forest[y][x]=='E'){if(steps==minLen){pathNum++;}else if(steps>minLen){//此时pathNum不变}else{minLen=steps;pathNum=1;}return;}else{//巧用'T'来避免深度递归遍历中后退情况forest[y][x]='T';for(int idx=0;idx<dx.length;idx++){int nowx=x+dx[idx];//列int nowy=y+dy[idx];//行if(nowx<colLen&&nowx>=0&&nowy<rowLen&&nowy>=0){if(forest[nowy][nowx]!='T'){dfs(forest,nowy,nowx,steps+1);}}}//在递归完成后将此处设置为'.',复原为可访问状态,方便尝试其他方案forest[y][x]='.';}}
}

说明:这个测试用例的预期输出是错误的,应该是(6,3)

四、刷题链接

牛牛的果实迷宫_牛客题霸_牛客网

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

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

相关文章

Linux中的库

什么是库&#xff1f; 库是一组预先编译好的方法/函数的集合&#xff0c;其他程序想要使用源文件中的函数时&#xff0c;只需在编译可执行程序时&#xff0c;链接上该源文件生成的库文件即可。 库分为两类&#xff1a;静态库和动态库 在Linux系统中&#xff0c;以.a为后缀的…

Animate软件基础:删除图层或文件夹

Animate软件中&#xff0c;图层或者图层文件夹同样可以进行删除操作&#xff0c;不过需要注意的是&#xff0c;删除图层或者删除文件夹&#xff0c;都会将其中所有的内容删除。 要选择图层或文件夹&#xff0c;可以单击时间轴中该图层或文件夹的名称&#xff0c;或者单击图层中…

003 选择排序(lua)

文章目录 1selectionSort.lua2selectionSort.lua复杂度SortingHelper.lua 先挑最值&#xff0c;再把剩下的挑最值&#xff0c;再把剩下的挑最值。。。 1selectionSort.lua -- 排序函数 function selectionSort(arr) -- 外层循环&#xff0c;从数组的第一个元素开始&#xff…

2-自动驾驶关键技术框架

框架 来自《自动驾驶汽车决策与控制》这本书 三大技术 车载平台的关键技术&#xff1a; 环境感知技术&#xff1a;这是自动驾驶车辆能够“看”和“感知”周围世界的技术。它包括使用摄像头、雷达、激光雷达&#xff08;Lidar&#xff09;和超声波传感器来检测和识别道路、障…

LeetCode21-合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xf…

ZYNQ MPSOC烧写问题记录

1、如果带有ARM代码&#xff0c;则ZYNQ MPSOC烧写的烧写是通过ViTIS进行的&#xff0c;通过JTAG模式进行烧写&#xff0c;如下图的PS_MODEx配置成0000&#xff0c;这个只与硬件相关&#xff0c;硬件拉高拉低。 2、如果不带ARM代码&#xff0c;则烧写过程与前版本一致。

发现传统之美,AI赋能非遗传承

大家好&#xff0c;今天想在本片博文分享下关于皮影这项非物质文化遗产&#xff0c;以及如何简单借助人工智能AI赋能皮影的奇妙可能。 皮影戏的魅力 在喧嚣的现代生活中&#xff0c;我们不应该忘记那些传统的手工艺和技艺&#xff0c;它们是中华文化的瑰宝&#xff0c;它们是…

新手做ASO优化必须要了解的8大指标

在进行 ASO 优化时&#xff0c;以下这些指标通常应优先考虑&#xff1a; 1. 关键词排名 - 这是衡量 ASO 效果的关键指标之一。了解您的应用在特定关键词搜索结果中的位置&#xff0c;有助于评估优化策略的有效性。 2. APP下载量 - 直接反映了应用的受欢迎程度和ASO工作对吸…

ONLYOFFICE8.1版本桌面编辑器——功能测评

一、编辑DOCX 相信大家都有写word文档的经历&#xff0c;不知道大家是不是跟我一样&#xff0c;感觉做一个word不难&#xff0c;但想做好一个word却很麻烦&#xff0c;功能太多&#xff0c;看的人眼花缭乱&#xff0c;有时候一个功能要找很久&#xff0c;甚至有的功能用一辈子都…

Edge浏览器下载文件提示检测到病毒无法下载

当Edge浏览器提示检测到病毒而无法下载时&#xff0c;可以采取以下步骤解决问题&#xff1a; 1. 关闭 Microsoft Defender SmartScreena: 打开Edge浏览器设置&#xff0c;找到“隐私、搜索和服务”选项。在“安全性"部分&#xff0c;关闭"Microsoft Defender Smart…

[数据库]事务的隔离级别存储引擎

事务的隔离级别 存储引擎 举例 myisam 进行回滚操作后可以发现有一个警告没有行受到影响 memory 比如用于qq的在线离线状态

选专业,适合理科女生的大学专业有哪些?

对于理科女生来说&#xff0c;选择大学专业时&#xff0c;既要考虑自己的兴趣和优势&#xff0c;也要考虑未来的就业前景和发展趋势。以下是一些适合理科女生的大学专业推荐。 一、专业选择要综合考虑 有的人的爱好只是一时兴起&#xff0c;有的人只是愿意为了兴趣爱好&#x…

vscode 使用正则将/deep/ 替换成 :deep()

在VSCODE编辑器的SEARCH中按上图书写即可&#xff0c;正则表达式如下&#xff1a;(\/deep\/)(.*?)(?\{) 替换操作如下&#xff1a;:deep($2) 如果有用,号隔开的用&#xff1a;(\/deep\/)(.*?)(?,)替换操作如下&#xff1a;:deep($2) 即可实现快速替换所有/deep/写法; 同理…

【C语言】--操作符详解

&#x1f32d;个人主页: 起名字真南 &#x1f37f;个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 &#xff1a;2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

【高级篇】MySQL集群与分布式:构建弹性和高效的数据服务(十四)

引言 在探讨了《分区与分片》策略后,我们已经学会了如何在单一数据库层面有效管理大量数据和提升查询效率。本章,我们将踏上更高层次的探索之旅,深入MySQL集群与分布式技术的广阔领域。这些技术不仅能够横向扩展系统的处理能力和存储容量,还能显著增强数据服务的可靠性和响…

【教学类65-05】20240627秘密花园涂色书(中四班练习)

背景需求: 打印以下几款秘密花园样式&#xff08;每款10份&#xff09;给中四班孩子玩一下&#xff0c;看看效果 【教学类65-01】20240622秘密花园涂色书01&#xff08;通义万相&#xff09;&#xff08;A4横版2张&#xff0c;一大3小 38张纸76份&#xff09;-CSDN博客文章浏览…

后端加前端Echarts画图示例全流程(折线图,饼图,柱状图)

本文将带领读者通过一个完整的Echarts画图示例项目&#xff0c;演示如何结合后端技术&#xff08;使用Spring Boot框架&#xff09;和前端技术&#xff08;使用Vue.js或React框架&#xff09;来实现数据可视化。我们将实现折线图、饼图和柱状图三种常见的数据展示方式&#xff…

黄子韬直播风暴揭秘经济人风波

黄子韬直播风暴&#xff1a;揭秘经纪人风波&#xff0c;真诚道歉小马丁6月27日晚&#xff0c;娱乐圈再次掀起波澜&#xff0c;黄子韬在直播中罕见地谈及了去年那场业界的经纪人风波&#xff0c;并意外地再次回应了与DJ小马丁的演出争议&#xff0c;这无疑让广大粉丝和网友们热血…

葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署

文章目录 软硬件准备数据准备数据处理脚本模型训练模型部署数据分享软硬件准备 训练端 PytorchultralyticsNvidia 3080Ti部署端 fastdeployonnxruntime数据准备 用labelimg进行数据标注 数据处理脚本 xml2yolo import os import glob import xml.etree.ElementTree as ETxm…

黑龙江等保测评视角下的物联网安全策略探索

引言随着物联网技术在黑龙江省各行各业的广泛应用&#xff0c;信息安全问题日益凸显。等保测评作为网络安全保障体系的重要组成部分&#xff0c;对于物联网环境下的数据保护、设备安全及隐私防护具有重要意义。 本文旨在探讨在等保测评框架下&#xff0c;如何构建有效的物联网…