2021.华为机试某题

article/2025/10/22 17:31:45

问题描述:

有M*N的节点矩阵,每个节点可以向8个方向(上、下、左、右及四个斜线方向)转发数据包,每个节点转发时会消耗固定时延,连续两个相同时延可以减少一个时延值(即当有K个相同时延的节点连续转发时可以减少K- 1个时延值),求左上角(0,0)开始转发数据包到右下角(M-1,N- 1)并转发出的最短时延。

输入:
第一行两个数字,M、N,接下来有M行,每行有N个数据,表述M* N的矩阵。
输出:
最短时延值。

示例1:
3 3
0 2 2
1 2 1
2 2 1
输出:3
示例2:
3 3
2 2 2
2 2 2
2 2 2
输出:4(2 + 2 + 2 -(3-1))

思路:

采用优先队列,维护一个小顶堆,堆需要记录本次访问节点时的延时值,便于判断下一节点是否进行减一操作。

代码如下:

m, n = map(int, input().split())
grid = []
for i in range(m):grid.append(list(map(int, input().split())))
from heapq import *
def search(grid):visited = set()p = [(grid[0][0], 0, 0, grid[0][0])]visited.add((0, 0))heapify(p)while p:t, i, j, pre = heappop(p)if i == len(grid) - 1 and j == len(grid[0]) - 1:return tfor i_new, j_new in [(i - 1, j - 1), (i - 1, j), (i, j - 1), (i + 1, j + 1), (i + 1, j), (i, j + 1), (i - 1, j + 1), (i + 1, j - 1)]:if 0 <= i_new < len(grid) and 0 <= j_new < len(grid[0]) and (i_new, j_new) not in visited:visited.add((i_new, j_new))if pre == grid[i_new][j_new]:heappush(p, (t + grid[i_new][j_new] - 1, i_new, j_new, grid[i_new][j_new]))else:heappush(p, (t + grid[i_new][j_new], i_new, j_new, grid[i_new][j_new]))
out = search(grid)
print(out)

案例输出:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/XbPqXMHt.shtml

相关文章

牛客网华为机试题训练汇总(JavaScript)

牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09; 文章目录 牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09;前言一、题目1. HJ11 数字颠倒2. HJ22 汽水瓶3. HJ53 杨辉三角的变形4. HJ2 计算某字母出现次数5. HJ8 合并表记录6. HJ17 坐标移…

1、华为机试题记录

1、小型机通常采用RISC和unix操作系统。 RISC&#xff1a;精简指令集计算机&#xff0c;指令少&#xff0c;运行效率更高。 unix&#xff1a;商用UNIX现在主要是三大分支IBM的AIX,SUN的solaris&#xff0c;HP的hp-ux&#xff0c;运行在小型机上。金融电信等行业应用广泛&#x…

华为机试练习题汇总

华为机试练习广场&#xff1a; [华为机试练习题]1.周期串问题 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]2.大数求和 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]3.分解字符串 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]4.简单密码破解 - Yoona - 博客频道 - CSD…

华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典

文章目录 2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。华为 OD 机试题清单&#xff08;机试题库还在逐日更新&#xff09; 2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。 在 2023 年&#xff0c;Python 已成为广泛使用的编程语言之一…

华为OD机试真题2022Q4 A + 2023 B卷(JavaJavaScript)

大家好&#xff0c;我是哪吒。 五月份之前&#xff0c;如果你参加华为OD机试&#xff0c;收到的应该是2022Q4或2023Q1&#xff0c;这两个都是A卷题。 5月10日之后&#xff0c;很多小伙伴收到的是B卷&#xff0c;那么恭喜你看到本文了&#xff0c;抓紧刷题吧。B卷新题库正在更…

EntityWrapper的in用法

EntityWrapper<UserLife> wrapper new EntityWrapper<>(); wrapper.eq("is_valid", 1); wrapper.in("life_name", "ge,edu,career"); List<UserLife> userLabelList userLabelService.selectList(wrapper); in的第二个参数…

QueryWrapper

官方文档&#xff1a;https://mp.baomidou.com/guide/wrapper.html#querywrapper select("id", "name", "age") select(i -> i.getProperty().startsWith("test")) controller中使用的例子

wrapper.and

多条件查询时 如果使用这种的话&#xff0c;会出现只要这个条件成功了&#xff0c;不管你后面或者前面有没有and条件&#xff0c;它都成功&#xff0c; 可以看出来整个条件都在一个括号里面 //创建查询对象LambdaQueryWrapper<PublishWorksRemit> wrapper new Lambd…

MyBatis-Plus使用条件构造器Wrapper

Wrapper &#xff1a;条件构造抽象类&#xff0c;最顶端父类。AbstractWrapper类比较重要。 AbstractWrapper类是 QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类。用于生成 sql 的 where 条件,&#xff0c;entity 属性也用于生成 sql 的 whe…

MybatisPlus使用Wrapper实现增删改查功能

条件构造器的格式说明 导入maven依赖 <dependency><groupId>com.github.jeffreyning</groupId><artifactId>mybatisplus-plus</artifactId><version>1.5.1-RELEASE</version><scope>compile</scope></dependency>…

java wrapper作用_java Wrapper类基本用法详解

在封装中有一种特殊的类,能够把基本的数据类型进行转换来方便实际的使用。我们在之前提到的一些数据类型,最明显的特征是所有字母为小写状态,那么经过Wrapper的包装后,首字母就变成了大写。下面我们就这种特殊的封装类Wrapper的概念、转换图解、模式以及实例带来分享。 1.概…

MybatisPlus学习 条件构造器Wrapper方法详解

目录 1、条件构造器 2、AbstractWrapper 2.1、eq、allEq、ne、 2.2、gt、ge、lt、le 2.3、between、notBetween 2.4、like、notLike、likeLeft、likeRight 2.5、isNull、isNotNull 2.6、in、notIn 2.7、inSql、notInSql 2.8、or、and 2.9、exists、notExists 2.10、…

MybatisPlus--QueryWrapper

QueryWrapper wrapper介绍 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 QueryWrapper &#xff1a; Entity 对象封装操作类&#xff0c;不是用lambda语法UpdateWrapper &…

Gradle基础:9:wrapper的使用

Gradle Wrapper是gradle建议的使用方式&#xff0c;这篇文章将会结合具体的例子来说明一下如何使用。 Gradle Wrapper Gradle Wrapper实际上就是一个脚本&#xff0c;使用它可以下载和使用指定版本的gradle&#xff0c;根据需要进行在使用之前进行下载&#xff0c;有效避免本…

spring boot之maven-wrapper

Spring Boot有很多功能特性值得借鉴和学习&#xff0c;很多玩Spring Boot的人知道不需要安装Tomcat很方便&#xff0c;其实并没有发现Maven也是不需要提前安装。它这样做的好处在于解决了开发环境maven版本不一致导致的各种问题&#xff0c;spring boot中集成了maven-wrapper的…

dubbo之SPI Wrapper分析

写在前面 本文需要dubbo SPI的简单基础知识&#xff0c;对dubbo SPI不了解的朋友可以参考dubbo之SPI分析 。 源码&#xff01;&#xff01;&#xff01;。 在dubbo之SPI分析 文章中我们分析了SPI机制&#xff0c;其中有种SPI是一个Wrapper类的情况&#xff0c;本文一起来看下Wr…

MyBatis与QueryWrapper

目录 一、MyBatis标签 1.2 if标签 1.2 foreach标签 1.3 sql标签 1.4 where标签 1.5SQL片段的使用 二、条件构造器 2.1QueryWrapper 2.1.1查询 2.1.2 查询列2 2.1.2 删除 2.1.3子查询 2.1.4组装查询条件 2.1.5组装排序条件 2.1.6组装删除条件 2.1.7条件的优先级 2.1.8 子…

QueryWrapper常用方法

QueryWrapper常用方法 MybatisPlus 使用QueryWrapper测试用例 一、ge、gt、le、lt、isNull、isNotNull Test public void testQuery() { QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.isNull("name").ge("age", 12)…

java service wrapper 中文_Java Service Wrapper实践

很久前就使用JAVA写了一个后台服务器,基于MINA框架的。并且一直部署运行于服务器中,当然有一个黑框框。 就正常运行而言,此种运行方式没有任何问题。 但是就这运行期间出现的一些问题: 1,服务器问题重启后,每次都要登录远程将服务器打开,即使我已经配置了开机自启动,但…

Gradle Wrapper 详解

Gradle Wrapper 详解 我们介绍了 Android 项目的目录及 Gradle 配置&#xff0c;我们提到有个目录是/gradle/wrapper。今天这篇文章我们来学习 Gradle Wrapper。通过这篇文章我们将了解什么是 Gradle Wrapper&#xff1f;为什么需要用 Gradle Wrapper&#xff1f;以及 Gradle …