【蓝桥杯】走迷宫
题目:
解题思路:
简单的广度优先算法(BFS)
BFS 的特性
- 按层次遍历:BFS 按照节点的距离(边的数量)来逐层访问节点。
- 保证最短路径:对于无权图(所有边权重相同),BFS 能够找到从起点到任何其他节点的最短路径。
- 避免回路:通过使用已访问标记(
visited数组),可以防止重复访问同一个节点,从而避免无限循环。 - 队列结构:使用队列来管理待访问的节点。
import java.util.Scanner;
import java.util.Queue;
import java.util.ArrayDeque;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {//方向static int[] dx = {0, 0, -1, 1};static int[] dy = {1, -1, 0, 0};//标记是否走过static boolean[][] visted;//矩阵大小static int N, M;//入口、出口位置static int startx, starty, endx, endy; public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...N = scan.nextInt();M = scan.nextInt();int [][] arr = new int[N][M];visted = new boolean[N][M];for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {arr[i][j] = scan.nextInt(); }}startx = scan.nextInt();starty = scan.nextInt();endx = scan.nextInt();endy = scan.nextInt();System.out.println(bfs(arr, startx - 1, starty - 1));scan.close();}public static int bfs(int[][] arr, int x, int y) {//创建队列,更新位置Queue<int[]> q = new ArrayDeque<>();q.offer(new int[] {x, y, 0});while(!q.isEmpty()) {int[] poll = q.poll();int x1 = poll[0];int y1 = poll[1];int steps = poll[2];//判断是否到达终点if (x1 == endx-1 && y1 == endy-1) {return steps;}//根据四个方向走下一步for (int i = 0; i < 4; i++) {int xx = x1 + dx[i];int yy = y1 + dy[i];if (xx >=0 && yy >= 0 && xx < N && yy < M && !visted[xx][yy] && arr[xx][yy] == 1) {visted[xx][yy] = true;q.offer(new int[] {xx, yy, steps + 1});}}}return -1;}
}
相关文章:
【蓝桥杯】走迷宫
题目: 解题思路: 简单的广度优先算法(BFS) BFS 的特性 按层次遍历:BFS 按照节点的距离(边的数量)来逐层访问节点。保证最短路径:对于无权图(所有边权重相同࿰…...
【pyqt】(三)designer
designer ui设计 在学习后续的代码之前,我们可以先学习一下designer这款工具,在安装软件的时候我们有提到过,其具体位置在虚拟环境根目录下的\Lib\site-packages\PySide6文件夹中。对于新手而言,使用这种可视化的工具可以帮助我们…...
【Go学习】-01-3-函数 结构体 接口 IO
【Go学习】-01-3-函数 结构体 接口 IO 1 函数1.1 函数概述1.1.1 函数做为参数1.1.2 函数返回值 1.2 参数1.3 匿名函数1.4 闭包1.5 延迟调用1.6 异常处理 2 结构体2.1 实例化2.2 匿名结构体2.3 匿名字段 3 类方法3.1 接收器3.2 类方法练习:二维矢量模拟玩家移动3.3 给…...
昆仑万维大数据面试题及参考答案
请介绍一下 Flume 组件。 Flume 是一个分布式、可靠、高可用的海量日志采集、聚合和传输的系统。 从架构层面来看,它主要包含以下几个关键部分。首先是 Source,它是数据的收集端,能够接收多种不同来源的数据。比如,它可以从各种服务器的日志文件中读取数据,像 Web 服务器产…...
20250103在Ubuntu20.04.5的Android Studio 2024.2.1.12中跑通Hello World
20250103在Ubuntu20.04.5的Android Studio 2024.2.1.12中跑通Hello World 2025/1/3 14:06 百度:android studio helloworld android studio hello world kotlin helloword kotlin 串口 no run configurations added android studio no run configurations added 1、…...
Hack The Box-Starting Point系列Three
答案 How many TCP ports are open?(靶机开了几个TCP端口) 2What is the domain of the email address provided in the “Contact” section of the website?(网站的“CONTACT”部分提供的电子邮件地址的域是什么?)…...
【Python其他生成随机字符串的方法】
在Python中,除了之前提到的方法外,确实还存在其他几种生成随机字符串的途径。以下是对这些方法的详细归纳: 方法一:使用random.randint结合ASCII码生成 你可以利用random.randint函数生成指定范围内的随机整数,这些整…...
redis7基础篇2 redis的主从模式1
目录 一 主从模式 1.1 主从复制的作用 1.2 配置常用命令 1.3 主从复制常见问题 1.4 主从复制的缺点 1.5 redis主从复制原理 二 redis主从复制的搭建流程 2.1 注意事项 2.2 redis的主从复制架构图 2.3 以6379.conf配置文件配置为例 2.4 以6380.conf配置文件配置为例 …...
Springboot - Web
Spring Boot 是一个用于简化 Spring 应用程序配置和部署的框架。它提供了一种快速开发的方式,通过默认配置、自动化配置等特性,使得开发者能够更快捷地构建和部署基于 Spring 的应用。 Spring Boot Web 是 Spring Boot 的一个子模块,它专注于…...
【C】动态内存管理
所谓动态内存管理,就是使得内存可以动态开辟,想使用的时候就开辟空间,使用完之后可以销毁,将内存的使用权还给操作系统,那么动态开辟内存有什么用呢? 假设有这么一种情况,你在一家公司中工作&am…...
lec5-传输层原理与技术
lec5-传输层原理与技术 1. 传输层概述 1.1. 关键职责 flow control,流量控制reliability,可靠性 1.2. TCP与UDP对比 面向连接 / 不能连接对数据校验 / 不校验数据丢失重传 / 不会重传有确认机制 / 没有确认滑动窗口流量控制 / 不会流量控制 1.3. 关…...
【C语言】_指针运算
目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用:实现my_strlen函数 3. 指针的关系运算(大小比较) 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识: 原文链接如下࿱…...
“AI智慧教学系统:开启个性化教育新时代
大家好,我是老王,一个在产品圈摸爬滚打多年的资深产品经理。今天,我想和大家聊聊一个最近特别火的概念——AI智慧教学系统。这东西听起来好像很高大上,但其实和我们每个人都息息相关,因为它关系到我们下一代的教育。 一…...
商用车自动驾驶,迎来大规模量产「临界点」?
商用车自动驾驶,正迎来新的行业拐点。 今年初,交通部公开发布AEB系统运营车辆标配征求意见稿,首次将法规限制条件全面放开,有望推动商用车AEB全面标配,为开放场景的商用车智能驾驶市场加了一把火。 另外,…...
CSS 学习之正确看待 CSS 世界里的 margin 合并
一、什么是 margin 合并 块级元素的上外边距(margin-top)与下外边距(margin-bottom)有时会合并为单个外边距,这样的现象称为“margin 合并”。从此定义上,我们可以捕获两点重要的信息。 块级元素,但不包括浮动和绝对定位元素,尽…...
杰发科技——使用ATCLinkTool解除读保护
0. 原因 在jlink供电电压不稳定的情况下,概率性出现读保护问题,量产时候可以通过离线烧录工具避免。代码中开了读保护,但是没有通过can/uart/lin/gpio控制等方式进行关闭,导致无法关闭读保护。杰发所有芯片都可以用本方式解除读保…...
uni-app深度解码:跨平台APP开发的核心引擎与创新实践
在当今数字化浪潮中,移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求,跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架,以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…...
unity团结云下载项目
今天开plastic scm发现它云服务好像停了哈,在hub里下载云端项目也不会出现在项目列表里,之前也有发邮件说让提前迁移到团结云。打开云仓库会弹这个,大概就是plastic scm无法解析域名地址吧 研究了一下团结云咋使,官方手册看半天也…...
Jmeter进阶篇(31)解决java.net.BindException: Address already in use: connect报错
📚前言 近期雪雪妹妹在使用Jmeter执行压测的时候,发现了一个非常让她头疼的问题,她使用20并发跑,正确率可以达到100%,但是一旦使用200并发,就会出现大量的报错,报错内容如下: java.net.BindException: Address already in use: connectat java.net.DualStackPlainSo…...
商米电子秤服务插件
概述 SunmiScaleUTS封装商米电子秤服务模块,支持商米旗下S2, S2CC, S2L CC等设备,设备应用于超市、菜市场、水果店等,用于测量商品的重量,帮助实现快捷、准确、公正的交易等一系列商业场景。 功能说明 SDK插件下载 一. 电子秤参数 型号:S2, S2CC, …...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
