【华为OD机试真题E卷】521、 机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(E卷复用)(C++)

【华为OD机试真题 Python语言】161、机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析 现有一个机器人,可放置于M x N的网格中任意位置,每个网格包含一个整数编号,当相邻网格的数字编号差值的绝对值小于等于1时,机器人可以在网格间移动。 >  问题:求机器人可活动的最大范围对应的网格点数目 >  说明:网格左上角坐标为(0,0) ,右下角坐标为(m-1,n-1),机器人只能在相邻网格间上下左右移动 阅读详情

一、题目

参考链接:https://sars2025.blog.youkuaiyun.com/article/details/141748083

题目描述

现有一个机器人口,可放置于MxN的网格中任意位置,每个网格包含一个整数编号,当相邻网格的数字编号差值的绝对值小于等
于1时,机器人可以在网格间移动。
问题:求机器人可活动的最大范围对应的网格点数目
说明:网格左上角坐标为(0,0),右下角坐标为(m-1,n-1),机器人只能在相邻网格间上下左右移动

输入输出

输入
第1行输入为M和N,M示网格的行数N表示网格的列数
之后M行表示网格数值,每行N个数值(数值大小用k示)
数值间用单个空格分隔,行首行尾无多余空格。
M、N、k均为整数,且1≤M,N≤150,0≤k≤50
输出
输出1行,包含1个数字,表示最大活动区域的网格点数目,行首行尾无多余空格

样例1

输入
4 4
1 2 5 2
2 4 4 5
3 5 7 1
4 6 2 4

输出
6

一、代码与思路

🧠C++语言思路

1.首先定义一个深度优先搜索函数dfs,用于计算从指定位置出发的活动区域的网格点数目
2.在dfs函数中,首先获取网格的行数m和列数n,并初始化活动区域的网格点数目为1。然后标记当前网格为已访问状态,
3.定义一个存储上下左右四个方向偏移量的directions数组。
4.遍历directions数组中的每个方向,计算新的坐标nx和ny。
5.如果新坐标满足条件(在网格范围内、未被访问、相邻网格编号差值的绝对值小于等于1),则递归调用dfs函数计算新位置的活动区
域的网格点数目,并将其累加到area中。
6.最后返回area作为当前位置的活动区域的网格点数目。
7.定义主函数main,在main函数中首先读取输入的网格大小m和n,并创建一个二维vector grid用于存储网格。
8.通过嵌套循环读取每个网格的数值,并将其存储在grid中。
9.调用maxGridArea函数计算最大活动区域的网格点数目,并将结果输出到标准输出流中。
10.返回0,表示程序执行完毕。

✅C++代码

#include <iostream>
#include <vector>
using namespace std;

int dfs(vector<vector<int>>& grid, int i, int j, vector<vector<bool>>& visited) {
    int m = grid.size();
    int n = grid[0].size();
    int area = 1;  // 活动区域的网格点数目,初始为1
    visited[i][j] = true;  // 将当前网格标记为已访问

    vector<pair<int, int>> directions = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};  // 上下左右四个方向的偏移量

    // 深度优先搜索
    for (auto direction : directions) {
        int dx = direction.first;
        int dy = direction.second;
        int nx = i + dx;
        int ny = j + dy;

        if (nx >= 0 && nx < m && ny >= 0 && ny < n && !visited[nx][ny] && abs(grid[nx][ny] - grid[i][j]) <= 1) {
            // 如果相邻网格满足条件(编号差值的绝对值小于等于1),则继续搜索
            area += dfs(grid, nx, ny, visited);
        }
    }

    return area;
}

int maxGridArea(vector<vector<int>>& grid) {
    int m = grid.size();  // 网格的行数
    int n = grid[0].size();  // 网格的列数

    int maxArea = 0;  // 最大活动区域的网格点数目

    // 创建一个与网格大小相同的二维数组,用于记录已访问的网格
    vector<vector<bool>> visited(m, vector<bool>(n, false));

    // 遍历网格的每个位置作为起点
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            if (!visited[i][j]) {
                int area = dfs(grid, i, j, visited);  // 深度优先搜索计算当前起点的活动区域的网格点数目
                maxArea = max(maxArea, area);  // 更新最大活动区域的网格点数目
            }
        }
    }

    return maxArea;
}

int main() {
    int m, n;
    cin >> m >> n;

    vector<vector<int>> grid(m, vector<int>(n));

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cin >> grid[i][j];
        }
    }

    int maxArea = maxGridArea(grid);

    cout << maxArea << endl;

    return 0;
}


华为OD机试 - 机器人可活动的最大网格点数目详解及C++/Java/JavaScript/Python代码实现 通过这道题目,我们掌握了如何利用 DFS 算法在网格图中找到最大连通区域的方法。无论是 C++、Java、JavaScript 还是 Python,解决思路都是一致的,都是通过递归处理网格的每个相邻节点,判断是否满足条件并计算连通分量的大小。在华为 OD 机试中,这类题目不仅仅考察基础算法的应用,更考验对网格类问题的处理技巧和效率优化。通过理解该题目的解题思路,能够帮助我们在实际开发中更好地应对类似的二维图问题。华为OD机试官方题库优快云编程题解析。 阅读详情

相关推荐

【华为OD机试真题】161、机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(C语言、C++、Java、Py、JS)

>现有一个机器人,可放置于M x N的网格中任意位置,每个网格包含一个整数编号,当相邻网格的数字编号差值的绝对值小于等于1时,机器人可以在网格间移动。 >  问题:求机器人可活动的最大范围对应的网格点数目 >  说明:网格左上角坐标为(0,0) ,右下角坐标为(m-1,n-1),机器人只能在相邻网格间上下左右移动

KJ.JK 1322

什么是华为OD?华为OD机试疑问解答

2024年,华为目前已经启用D卷,目前D卷和C卷的题目一样一次订阅永久阅读,支持在线刷题,持续更新,有问题随时解答,本专栏题目数量已收录到484道。每篇文章的思路分析都非常详细,题目新增图解思路,问题解疑,多样例测试,超过百字的思路参考解析。

KJ.JK 5834

【华为OD机试真题 C语言】521、机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(E卷复用)

华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,一文带你读懂华为OD,华为机试e卷

KJ.JK 3940

Scrum 敏捷框架完全指南

形式化的质量检查清单,只有满足 DoD 的增量才能交付。

Cat_fish_snow的博客 369

【华为OD机试真题E卷】521、 机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(E卷复用)(C++、Java、Py)

【华为OD机试真题】521、 机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(E卷复用)(C++、Java、Py) 题目描述 现有一个机器人,可放置于M x N的网格中任意位置,每个网格包含一个整数编号,当相邻网格的数字编号差值的绝对值小于等于1时,机器人可以在网格间移动。 问题:求机器人可活动的最大范围对应的网格点数目 说明:网格左上角坐标为(0,0) ,右下角坐标为(m-1,n-1),机器人只能在相邻网格间上下左右移动

KJ.JK 2398

VMware 虚拟机里连不上网的五种解决方案

在VMware虚拟机里的虚拟机系统连接不上网络 首先,注意查看适配器选项里的网络连接这两个网络连接是否存在,如果不存在可以重新装一下VM 如果存在,连不上网 解决办法一: 虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT 模式”,如果不行的话再linux系统。还是不行的话接着看第二种解决方案。 解决方法二: 可能原因是VMware NET Service...

墨轩 18万+

案例 | 高精度具身时序数据标注:澳鹏如何支撑头部机器人企业模型迭代

具身智能落地面临高质量时序标注数据瓶颈,某头部企业与澳鹏合作,通过多基地协同、双语专家团队、标准化SOP及自研MatrixGo平台,实现5,000+小时高精度具身时序数据标注与10,000+小时审核,攻克双语语义理解、0.1秒级时间戳精度与工具缺失难题,构建可复用的数据闭环体系,显著提升模型泛化能力与数据集质量。

Appen_China的博客 219

第1.1节 构网型 vs. 跟网型:根本区别与技术原理

构网型与跟网型变流器的本质区别在于控制哲学与等效模型。跟网型变流器采用"电压跟随,电流注入"策略,等效为受控电流源,依赖电网电压作为参考,在弱电网下存在稳定性问题。构网型变流器采用"自主同步,电压构建"策略,等效为受控电压源,能主动构建电压和频率,具备自主运行、黑启动和电网支撑能力。两者的核心差异体现在同步机制、电网依赖性、故障行为和系统支撑等方面。构网型变流器更适合高比例新能源、弱电网和微电网场景,是未来电力系统的重要发展方向。

技术工作者 1392

管道检测机器人行业调查、市场规模、排名分析报告2026-2032

全球管道检测机器人市场持续增长,2026年规模达12.63亿美元,预计2032年增至29.06亿美元,复合增长率14.9%。受管网老化、监管趋严及非开挖技术普及推动,市场需求旺盛。产品以轮式和履带式为主,广泛应用于供水、油气等管道检测。行业竞争呈现国际企业主导高端、国内外厂商多元共存格局。未来趋势聚焦AI智能识别、模块化设计、RaaS模式创新及氢能等新兴场景应用,技术升级与标准化建设将成为关键驱动力。

GlobalInfo的博客 231

电力电子技术复习笔记

通常在开关过程前后加入谐振,使开关开通前电压先降到0,关断前电流先降到0,消除开关过程电压、电流的重叠,降低它们的变化率,从而大大减小甚至消除开关损耗。小信号线性化模型的原理:忽略开关频率分量和开关频率谐波分量及其边频分量,建立占空比、输入电压等的低频扰动对变换器中的电压、电流影响的模型。解:可以利用变压器的变比改变输出电压大小,避免控制过程的占空比过小或过大,提高控制精度,同时有利于减轻输出电路中电力电子器件的耐压要求。驱动电路:用于控制功率半导体器件的开关,从而控制电路的电流和电压。

Miracle Fan的博客 1万+

Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

weixin_42445065的博客 4132

从主题定价到订单定价:机器人基金的产业链观察

从 Optimus 成本结构看,执行器、丝杠、减速器、电机合计占整机 BOM 七成以上,供应链占硬件成本约 70%,组合重点配置的环节恰为单机用量大、价值量高的部分。中金公司认为,板块正从主题映射向产业验证切换,上游核心零部件技术壁垒高、价值量稳,确定性优于整机。三季度末基金前十大持仓占净值 54.95%,汇川技术 8.53%、三花智控 8.29%、科大讯飞 7.41%、大族激光 6.83%、中控技术 5.25%、恒立液压 5.02%、拓普集团 4.19%、绿的谐波 3.64%,与指数权重结构基本对齐。

2301_80661077的博客 141

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2499

智能化机器人系统的模块化设计自动化!

智能化机器人系统的模块化设计自动化,本质上是将系统工程中的“设计决策权”从人类专家部分转移给AI。它不是一个单一的工具,而是一套集成了建模、搜索、生成、验证的闭环工程方法论。短期:建立标准化的模块接口规范(如基于ROS 2的IDL),并编写脚本实现半自动代码生成。中期:引入知识图谱管理模块库,实现基于规则的模块推荐与组合检查。长期:探索强化学习+仿真,让系统自主探索和发现新的、非直觉的高效模块组合方式。

m0_65595995的博客 165

基于STM32+RFID设计的宿舍检修管理系统

设计一个上位机,用来管理查看维修检修信息,当维修寝室的设备或者检修完成时,通过STM32上的RC522刷一下这个寝室的IC卡,识别这是哪个寝室,识别成功后在软件上弹出一个对话框,填写本次维修或者检修的事件,填写完毕点击提交即可。...

2555

YOLOv5/v7/v8首发革新改进——轻巧、创新的LADH检测头

本文介绍了一种原创改进的轻量化非对称多级压缩LADH检测头,该检测头能够实现即插即用,并在YOLOv5/v7/v8检测器中取得了显著的性能提升。本文将介绍一种原创改进的轻量级非对称多级压缩LADH(Lightweight Asymmetric Dual-Head)检测头,该检测头能够实现即插即用,并显著提升YOLO检测器的性能。因此,我们提出了一种非对称多级压缩的方法,即对不同类别的检测头采用不同的压缩比例。然而,为了进一步提高YOLO的性能,我们进行了一项原创改进,设计了一种轻巧且创新的LADH检测头。

IpyVariable的博客 2725

从单机到柔性岛:工业连接器如何让机器人真正实现“一机多用”?

如今,一台机器人往往不只承担一道工序。搬运、焊接、涂胶、装配,末端工具在不同工序间快速切换,正在把传统的“专机+专用工位”带向更紧凑的柔性岛。但现场很快会发现:让机器人把工具取下来、再装上去,并不算难;真正难的是,工具切换后,动力、控制、反馈和介质能否同步、稳定地到位。一次连接如果不可靠,轻则需要人工复位,重则影响整段工艺节拍。对于自动化集成商和机器人应用端而言,工业连接器已不再是被动附件,而是把“工具可换”转化为“工艺可切”的基础接口。

SHQT888888的博客 318

大厂面经:京东大数据面试题及参考答案(3万字长文)

Kafka是一个开源的分布式流处理平台,由 LinkedIn 开发并在 2011 年贡献给 Apache 软件基金会。高吞吐量:能够处理大量的数据流,适合实时数据管道。持久性:数据存储在磁盘上,确保数据不丢失。容错性:通过数据复制提供高可用性。扩展性:支持水平扩展,易于增加更多节点。Kafka 的核心概念Topic:逻辑上的数据流,可以理解为主题。Producer:生产数据的应用程序。Consumer:消费数据的应用程序。Broker:Kafka 集群中的服务器节点。Partition。

大模型大数据攻城狮的专栏 863

率能半导体 SS6944T四路半桥驱动芯片:60V/2.5A,覆盖纺织机械、工业自动化、办公自动化、机器人四大应用场景

率能半导体SS6944T是一款面向工业与自动化领域的四路独立半桥驱动芯片,支持8V–60V宽电压、2.5A峰值电流及双电源供电(±30V),集成浮动接地与内置3.3V LDO,可灵活驱动两个直流电机、一个步进电机或四个螺线管。其低导通电阻(440mΩ)、ETSSOP28封装带散热焊盘,兼顾高效率与紧凑布局。具备过流、过温、欠压保护及nFAULT故障输出,支持快慢衰减模式与输出并联,适用于纺织机械、工业自动化、办公设备与机器人等多场景,是高母线电压下多路电机驱动的理想解决方案。

2501_92263958的博客 128

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

手术机器人薄膜开关的5项医疗级验证:从消毒剂兼容到寿命测试的工程落地指南

A:电气安全 IEC 60601-1 / GB 9706.1,生物相容性 ISO 10993-1,EMC 按 IEC 60601-1-2,ESD 按 IEC 61000-4-2,供应商体系要求 ISO 13485。如果你正在做手术机器人或医疗设备的整机设计,欢迎在评论区交流面板选型、消毒流程定义和防护结构设计中的实际问题。手术室常用 75% 酒精、含氯消毒液、过氧化氢湿巾反复擦拭,面板的油墨、面涂和背胶都要经得住。:接触放电常见 ±8 kV、空气放电 ±15 kV,面板的接地层和面涂要配合整机设计。

BSD_HY的博客 356

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

将物理先验嵌入机器人学习:从经典力学到 VLA 与 WAM

本文综述了将物理先验嵌入机器人学习的三条路径:数据与表示、模型架构、训练损失,强调其位置决定约束效力。通过夹取软物体案例,阐明运动学、动力学、接触与材料特性在任务中的分层作用。指出物理先验非万能,需匹配实际条件;强约束可加速学习,但误用会引入偏差。提出“有效刚度”等概念,强调主动探测与参数辨识的重要性,并警示仅靠单一方法无法保障安全执行,需结合在线验证与控制闭环。

lovely_yoshino的博客 666

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数字孪生如何支持具身智能?从Real2Sim、机器人训练到Sim2Real闭环

真正的技术升级,是把过去用于“看世界、管空间”的数字孪生能力,进一步转化为机器人能够使用的场景重建、空间语义、物理仿真、虚拟验证、训练评测和运营环境。验证成熟的仿真平台等基础软硬件还应进一步扩大应用。从AES等数字孪生技术基础进一步发展到AperOne的选型评测、仿真训练和运营闭环,可以看作这一技术路线的具体实践:数字孪生不再只是描述现实世界,而开始成为机器人理解、验证和进入现实世界的中间层。**核心关键词:**数字孪生、具身智能、机器人仿真、场景重建、Real2Sim、Sim2Real、机器人评测。

Luckytiger09的博客 294

AMR 项目落地:机器人控制器硬件定制化需求复盘

本文复盘节卡与大族复合机器人控制器定制项目,揭示传统AMR控制器在复合机器人场景下的五大致命缺陷:实时域混杂、总线干扰、安全割裂、算力错配与硬件防护不足。提出“三域隔离”核心架构——移动实时域、机械臂实时域、感知AI域独立运行,通过分层硬件设计实现底盘锁止、手眼协同、安全互锁等关键时序精准控制。针对节卡轻载高频抓取与大族重载防爆工况,差异化定制算力、总线、供电与安全方案,验证了硬件IO优先于ROS消息、算力按需插拔的四大铁律,为复合机器人控制器量产提供可复用的标准化范式。

szxinmai的博客 228

技术拆解:TactileGlove II 触觉数据手套与 RoboTact 机器人触觉传感器的关键参数

触觉传感是机器人技术中极难量化的环节:压力是标量,力是矢量,而触觉是一整片矩阵阵列。要捕捉人与物体接触的全部信息,需要高分辨率、高重复性的传感硬件,也需要把数据变成决策的软件链路。PPS(Pressure Profile Systems)在这一领域持续投入三十年,其电容式触觉传感技术路线与产品参数,值得科研与自动化团队参考。 PPS 的核心是电容式触觉传感技术:压力改变电极间距、电容随之变化,经标定曲线换算为压力与力值。相比电阻式方案,电容式在灵敏度与重复性上更稳定,传感器可做得极薄、可弯曲、贴合任意被测

欣佰特cnbestec的博客 766

Super Odometry 2.0:相机与激光雷达退化后,机器人如何继续估计运动

Super Odometry 2.0提出四层自适应机制,应对黑暗、重复走廊、浓烟等退化场景下的运动估计挑战。系统通过特征层筛选可靠观测,方向层识别弱约束方向,引擎层动态调整因子图融合策略,最终在外部感知失效时启用学习式IMU里程计。其核心为因子图与神经网络间的双向反馈——正常时用真实位姿训练模型,退化时由模型提供运动先验,实现互惠融合。实测验证覆盖200公里、800小时,单次路线2966米端点漂移仅20厘米,展现了强鲁棒性与实用性。

lovely_yoshino的博客 686

室外巡检机器人推荐:园区与厂区怎么选

室外巡检机器人推荐先看地形与任务:派宝机器人旗下的室外安防巡逻机器人 S5 具备全地形越障、十余类安全隐患识别与三级预警,适合园区、厂区、物业和物流仓储的室外巡检;室内楼宇可搭配室内安防巡逻机器人 S2,楼梯、坡道等复杂地形可搭配巡逻机器狗 G2。

2601_96692017的博客 272
上一篇: 【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(C++)
下一篇: 一些实用的网站...持续更新
吴_知遇
博客等级 码龄7年 100粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值