news 2026/1/8 8:41:15

华为OD机试 - 陷阱方格/机器人走迷宫问题 - 动态规划(Java 双机位C卷 200分)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试 - 陷阱方格/机器人走迷宫问题 - 动态规划(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

房间由XY的方格组成,例如下图为6*4的大小。每一个方格以坐标(x, y)描述。

机器人固定从方格(0, 0)出发,只能向东或者向北前进。出口固定为房间的最东北角,如下图的方格(5, 3)。用例保证机器人可以从入口走到出口。

房间有些方格是墙壁,如(4, 1),机器人不能经过那儿。

有些地方是一旦到达就无法走到出口的,如标记为B的方格,称之为陷阱方格。

有些地方是机器人无法到达的,如标记为A的方格,称之为不可达方格,不可达方格不包括墙壁所在的位置。

如下示例图中,陷阱方格有2个,不可达方格有3个。

请为该机器人实现路径规划功能:给定房间大小、墙壁位置,请计算出陷阱方格与不可达方格分别有多少个。

二、输入描述

第一行为房间的X和Y(0 < X,Y <= 1000)

• 第二行为房间中墙壁的个数N(0 <= N < X*Y)

• 接着下面会有N行墙壁的坐标

同一行中如果有多个数据 以一个空格隔开,用例保证所有的输入数据均合法。(结尾不带 回车换行)

三、输出描述

陷阱方格与不可达方格数量,两个信息在一行中输出,以一个空格隔开。(结尾不带回车换行)

四、测试用例

测试用例1:

1、输入

6 4
5
0 2
1 2
2 2
4 1
5 1

2、输出

2 3

3、说明

该输入对应上图示例中的迷宫,陷阱方格有2个,不可达方格有3个

测试用例2:

1、输入

6 4
4
2 0
2 1
3 0
3 1

2、输出

0 4

3、说明

该输入对应的迷宫如下图,没有陷阱方格,不可达方格有4个,分别是(4, 0) (4, 1) (5, 0) (5, 1)

五、解题思路

用两个二维布尔数组做动态规划:

reachable[y][x] 表示从起点(0,0)只向东/北能否到达该格

canReach[y][x] 表示从该格只向东/北能否到达终点(X-1,Y-1),等价于从终点反向只向西/南能否到达该格

算法:

  1. 正向DP求 reachable
  2. 反向DP求 canReach
  3. 统计非墙格:reachable为真且canReach为假 -> 陷阱;reachable为假 -> 不可达
    复杂度 O(X*Y),适配 X,Y<=1000。

六、Java算法源码

publicclassOdTest{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);if(!sc.hasNextInt()){sc.close();return;}intX=sc.nextInt();// 房间宽度(x轴)intY=sc.nextInt();// 房间高度(y轴)intN=sc.nextInt();// 墙壁数量boolean[][]wall=newboolean[Y][X];for(inti=0;i<N;i++){intwx=sc.nextInt();intwy=sc.nextInt();wall[wy][wx]=true;}boolean[][]reachable=newboolean[Y][X];// 正向DP:从(0,0)向东/北能否到达for(inty=0;y<Y;y++){for(intx=0;x<X;x++){if(wall[y][x]){reachable[y][x]=false;continue;}if(x==0&&y==0){reachable[y][x]=true;// 起点}else{booleanfromLeft=x>0&&reachable[y][x-1];booleanfromDown=y>0&&reachable[y-1][x];reachable[y][x]=fromLeft||fromDown;}}}boolean[][]canReach=newboolean[Y][X];// 反向DP:从终点反向向西/南能否到达(等价于正向能到终点)for(inty=Y-1;y>=0;y--){for(intx=X-1;x>=0;x--){if(wall[y][x]){canReach[y][x]=false;continue;}if(x==X-1&&y==Y-1){canReach[y][x]=true;// 终点}else{booleanfromRight=x+1<X&&canReach[y][x+1];booleanfromUp=y+1<Y&&canReach[y+1][x];canReach[y][x]=fromRight||fromUp;}}}inttrap=0;intunreachable=0;for(inty=0;y<Y;y++){for(intx=0;x<X;x++){if(wall[y][x]){continue;// 墙不是不可达格}if(!reachable[y][x]){unreachable++;}elseif(!canReach[y][x]){trap++;}}}System.out.print(trap+" "+unreachable);sc.close();}}

七、效果展示

1、输入

5 5
2
1 3
2 2

2、输出

1 1

3、说明

(1,2)可达但无法到出口为陷阱;(2,3)不可达。


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 双机位C卷 200分)

🏆本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/5 17:33:26

YOLO目标检测置信度阈值设置技巧

YOLO目标检测置信度阈值设置技巧 在工业相机持续扫描流水线的那一刻&#xff0c;一个微小的焊点缺陷可能被放大为整批产品的报废。而在自动驾驶车辆的感知系统中&#xff0c;一次误检或漏检都可能导致严重的安全后果。这些场景背后&#xff0c;YOLO&#xff08;You Only Look O…

作者头像 李华
网站建设 2026/1/7 5:16:22

React2Shell (CVE-2025-55182) 完整漏洞赏金狩猎指南:揭秘高危RCE漏洞

CVE-2025–55182 (React2Shell) —— 完整漏洞赏金狩猎指南 CVE-2025–55182&#xff08;昵称“React2Shell”&#xff09;是一个严重的远程代码执行漏洞&#xff0c;其CVSS评分为10.0&#xff0c;主要影响React Server Components和Next.js应用程序。该漏洞由Lachlan Davidson…

作者头像 李华
网站建设 2026/1/3 10:08:50

mfc100chs.dll损坏丢失找不到 打不开软件问题 免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/1/3 7:24:12

麒麟操作系统新手完全指南:从零开始掌握国产操作系统

第一章&#xff1a;为什么你应该学习麒麟操作系统 1.1 历史机遇&#xff1a;国产操作系统的黄金时代 2023年&#xff0c;中国自主操作系统市场增长率达到惊人的87.5%&#xff0c;其中麒麟操作系统占据35%的市场份额。不仅仅是政府机关和国有企业&#xff0c;越来越多的民营企…

作者头像 李华
网站建设 2026/1/2 12:28:25

YOLO目标检测标注规范制定建议书

YOLO目标检测标注规范制定建议书 在智能制造工厂的质检流水线上&#xff0c;一台工控机正以每秒百帧的速度分析高清摄像头传来的图像——划痕、缺料、异物等微小缺陷被毫秒级识别并触发报警。支撑这一高效视觉系统的&#xff0c;正是YOLO&#xff08;You Only Look Once&#x…

作者头像 李华
网站建设 2026/1/6 1:24:44

毕设 深度学习的人体跌倒检测与识别(源码+论文)

文章目录 0 前言1 项目运行效果2 相关技术原理2.1卷积神经网络2.2 YOLO简介2.3 YOLOv5s 模型算法流程和原理2.4 数据集处理数据标注简介数据保存 2.5 模型训练 4 最后 0 前言 &#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创…

作者头像 李华