华为非AI方向笔试 7月24号 真题 【地宫探宝】

发布时间:2026/7/29 19:29:37

华为非AI方向笔试 7月24号 真题 【地宫探宝】
地宫探宝(C/Py/Java/Js/Go)题解华为笔试真题 7月24号 非AI方向第三题 300分题型题目内容你在玩地宫探宝游戏地宫中每块地砖上都有不同价值的财宝每回合你有三种走法移动到下一块地砖跳过下一块地砖移动到第二块地砖跳过下面的第一、第二块地砖移动到第三块地砖请在回合数耗尽前携带最多的财宝逃离地宫。设定逃离失数回合数耗尽仍未到达最后一块地砖起点在地宫之外目的地是最后一块地砖自动拾取落脚地砖上的财宝地砖按照直线排列输入描述nnn地砖个数取值[5,10000][5,10000][5,10000]mmm回合数上限取值[2,5000]nnn个整数空格分割表示每块地砖上财宝价值取值[0,5][0,5][0,5]注意所有的输入均为整数用空格分割题目保证输入合法无需校验输入输出描述输出携带的财宝总价要求找到财宝总价最大值如无法逃离则返回−1-1−1样例1输入5 3 1 2 1 1 3输出6说明第一行有5块地砖要求3步逃离 第二行5个整数分别表示地砖上的财宝价值最优走法 第一步第二块地砖拾取价值为2的财宝 第二步第三块或第四块拾取价值为1的财宝 第三步第五块地砖拾取价值为3的财宝财宝价值共计6样例2输入10 3 0 0 3 1 2 3 0 0 0 0输出-1说明回合数是3最大移动距离是9无法在回合数耗尽前逃离题解思路思路:动态规划移动过程中存在两个状态当前所处位置当前已用回合通过可定义状态数组dp[i][j]表示使用i回合到达j能获得的最大财宝初始化全部设置为-INF表示不可达对第一轮进行初始化第一次可以走1格到达02格到达13格到达2因此设置dp[1][0]a[0], dp[1][1] a[1], dp[1][2] a[2]枚举轮数为[2,m]进行状态转移对于当前dp[i][j]j位置在上轮可达情况下的状态转移为走一步dp[i1][j 1] max(dp[i1][j 1], dp[i][j] a[j1])走一步dp[i1][j 2] max(dp[i1][j 2], dp[i][j] a[j2])走一步dp[i1][j 3] max(dp[i1][j 3], dp[i][j] a[j3])按照上述如果每一轮n-1位置可达更新记录能取得的最大值。同时考虑到状态转移只发生在上一轮和当前轮可采用滚动数组pre,cur进行空间压缩。上述代码平均时间复杂度为O(nm)C#includebits/stdc.husingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(nullptr);intn,m;cinnm;vectorintvalue(n);for(inti0;in;i){cinvalue[i];}// 无法逃离if(m*3n){cout-1;return0;}// 不可达标志constintNEG-1e9;// pre上回合 cur当前回合 到达i能获得的最大价值vectorintpre(n,NEG),cur(n,NEG);if(n1)pre[0]value[0];if(n2)pre[1]value[1];if(n3)pre[2]value[2];intansNEG;ansmax(ans,pre[n-1]);// 枚举回合, 进行状态转移for(intstep2;stepm;step){fill(cur.begin(),cur.end(),NEG);// 枚举当前位置for(inti0;in;i){if(pre[i]NEG){continue;}// 枚举当前能走到的位置for(intd1;d3;d){intnxid;if(nxn){break;}cur[nx]max(cur[nx],pre[i]value[nx]);}}ansmax(ans,cur[n-1]);swap(pre,cur);}coutans;return0;}javaimportjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnsc.nextInt();intmsc.nextInt();int[]valuenewint[n];for(inti0;in;i){value[i]sc.nextInt();}// 无法逃离if(m*3n){System.out.println(-1);return;}// 不可达标志finalintNEG-1000000000;// pre上回合cur当前回合到达i能获得的最大价值int[]prenewint[n];int[]curnewint[n];Arrays.fill(pre,NEG);Arrays.fill(cur,NEG);if(n1)pre[0]value[0];if(n2)pre[1]value[1];if(n3)pre[2]value[2];intansNEG;ansMath.max(ans,pre[n-1]);// 枚举回合进行状态转移for(intstep2;stepm;step){Arrays.fill(cur,NEG);// 枚举当前位置for(inti0;in;i){if(pre[i]NEG){continue;}// 枚举当前能走到的位置for(intd1;d3;d){intnxid;if(nxn){break;}cur[nx]Math.max(cur[nx],pre[i]value[nx]);}}ansMath.max(ans,cur[n-1]);int[]temppre;precur;curtemp;}System.out.println(ans);}}pythonn,mmap(int,input().split())valuelist(map(int,input().split()))# 无法逃离ifm*3n:print(-1)exit()# 不可达标志NEG-10**9# pre上回合 cur当前回合 到达i能获得的最大价值pre[NEG]*n cur[NEG]*nifn1:pre[0]value[0]ifn2:pre[1]value[1]ifn3:pre[2]value[2]ansNEG ansmax(ans,pre[n-1])# 枚举回合进行状态转移forstepinrange(2,m1):cur[NEG]*n# 枚举当前位置foriinrange(n):ifpre[i]NEG:continue# 枚举当前能走到的位置fordinrange(1,4):nxidifnxn:breakcur[nx]max(cur[nx],pre[i]value[nx])ansmax(ans,cur[n-1])pre,curcur,preprint(ans)javascriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});constinput[];rl.on(line,(line){input.push(line);});rl.on(close,(){const[n,m]input[0].split( ).map(Number);constvalueinput[1].split( ).map(Number);// 无法逃离if(m*3n){console.log(-1);return;}// 不可达标志constNEG-1000000000;// pre上回合 cur当前回合 到达i能获得的最大价值letprenewArray(n).fill(NEG);letcurnewArray(n).fill(NEG);if(n1)pre[0]value[0];if(n2)pre[1]value[1];if(n3)pre[2]value[2];letansNEG;ansMath.max(ans,pre[n-1]);// 枚举回合进行状态转移for(letstep2;stepm;step){cur.fill(NEG);// 枚举当前位置for(leti0;in;i){if(pre[i]NEG){continue;}// 枚举当前能走到的位置for(letd1;d3;d){constnxid;if(nxn){break;}cur[nx]Math.max(cur[nx],pre[i]value[nx]);}}ansMath.max(ans,cur[n-1]);lettemppre;precur;curtemp;}console.log(ans);});Gopackagemainimport(bufiofmtos)funcmax(a,bint)int{ifab{returna}returnb}funcmain(){in:bufio.NewReader(os.Stdin)varn,mintfmt.Fscan(in,n,m)value:make([]int,n)fori:0;in;i{fmt.Fscan(in,value[i])}// 无法逃离ifm*3n{fmt.Println(-1)return}// 不可达标志constNEG-1000000000// pre上回合 cur当前回合 到达i能获得的最大价值pre:make([]int,n)cur:make([]int,n)fori:0;in;i{pre[i]NEG cur[i]NEG}ifn1{pre[0]value[0]}ifn2{pre[1]value[1]}ifn3{pre[2]value[2]}ans:NEG ansmax(ans,pre[n-1])// 枚举回合进行状态转移forstep:2;stepm;step{fori:0;in;i{cur[i]NEG}// 枚举当前位置fori:0;in;i{ifpre[i]NEG{continue}// 枚举当前能走到的位置ford:1;d3;d{nx:idifnxn{break}cur[nx]max(cur[nx],pre[i]value[nx])}}ansmax(ans,cur[n-1])pre,curcur,pre}fmt.Println(ans)}

相关新闻

不掉线、不外泄,赛博安全感有了

不掉线、不外泄,赛博安全感有了

2026/7/29 19:19:37

作为一个常年跟核心服务器数据和商业代码打交道的互联网社畜,我多多少少落下了一点职业病——俗称“远控被迫害妄想症”。总担心远程连接的时候数据在网络上裸奔被截获,或者连接突然中断导致写了一半的工程直接死锁损坏。那感觉,刺激程度不亚…

3小时掌握免费RPA工具taskt:Windows桌面自动化终极指南

3小时掌握免费RPA工具taskt:Windows桌面自动化终极指南

2026/7/29 19:19:37

3小时掌握免费RPA工具taskt:Windows桌面自动化终极指南 【免费下载链接】taskt taskt (pronounced tasked and formely sharpRPA) is free and open-source robotic process automation (rpa) built in C# powered by the .NET Framework 项目地址: https://gitco…

掌握Spring AOP编程:tech-pdai-spring-demos中的XML与注解式切面实现教程

掌握Spring AOP编程:tech-pdai-spring-demos中的XML与注解式切面实现教程

2026/7/29 19:19:37

掌握Spring AOP编程:tech-pdai-spring-demos中的XML与注解式切面实现教程 【免费下载链接】tech-pdai-spring-demos Spring Framework5/SpringBoot 2.5.x Demos 项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos Spring AOP(…

Nebula Console:3分钟掌握图数据库命令行操作的终极方案

Nebula Console:3分钟掌握图数据库命令行操作的终极方案

2026/7/29 22:39:45

Nebula Console:3分钟掌握图数据库命令行操作的终极方案 【免费下载链接】nebula-console Command line interface for the Nebula Graph service 项目地址: https://gitcode.com/gh_mirrors/ne/nebula-console 想象一下,当你面对复杂的关系数据时…

Windows 7 SP2更新包:让经典系统在现代硬件上焕发新生的革命性解决方案

Windows 7 SP2更新包:让经典系统在现代硬件上焕发新生的革命性解决方案

2026/7/29 22:39:45

Windows 7 SP2更新包:让经典系统在现代硬件上焕发新生的革命性解决方案 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com/g…

揭秘swyxkit核心功能:GitHub Issues CMS如何革新博客管理

揭秘swyxkit核心功能:GitHub Issues CMS如何革新博客管理

2026/7/29 22:39:45

揭秘swyxkit核心功能:GitHub Issues CMS如何革新博客管理 【免费下载链接】swyxkit An opinionated blog starter for SvelteKit Tailwind Netlify. Refreshed for SvelteKit 1.0! 项目地址: https://gitcode.com/gh_mirrors/sw/swyxkit swyxkit是一款基于…

OpenCut|轻松搞定多语种图片翻译!

OpenCut|轻松搞定多语种图片翻译!

2026/7/29 22:39:45

浏览海外素材、查阅外文资料时,经常遇到带外文的图片,普通翻译工具提取文字后容易打乱原图排版,重新调整十分耗费时间。opencut 图片翻译功能很好解决这类难题,平台支持 30 种国内外语言互译。翻译完成后可以一比一还原原图排版、…

一文读懂大模型登记是什么?2026完整版全过程流程、材料清单、常见误区

一文读懂大模型登记是什么?2026完整版全过程流程、材料清单、常见误区

2026/7/29 22:39:45

随着《生成式人工智能服务管理暂行办法》持续落地,很多AI研发企业、AI应用运营方经常接触两个名词:大模型备案、大模型登记。大量从业者容易将两者混淆,不清楚自己公司的业务到底需要办理哪一项、完整办理链路、需要准备什么资料。 本文结合全…

中小型加工厂管理系统软件开发

中小型加工厂管理系统软件开发

2026/7/29 22:29:44

中小型加工厂管理系统软件开发的关键要点编辑:araolin(私域邦网络土土哥)开发中小型加工厂管理系统需要结合生产流程、库存管理、订单跟踪等核心需求。以下为关键开发方向:系统功能模块设计生产管理模块实现工单创建、任务分配、进…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

2026/7/29 0:08:23

打工人总是跑不掉要写会议纪要。 我在一家互联网公司,一周至少八场会:产品评审、数据复盘、项目同步、客户沟通,每场一小时起步。 以前的标准流程是开会拼命记→会后凭记忆补→整理成文档发群,结果经常记不全、记错、记串。 大概年…

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

2026/7/29 0:08:23

重庆化龙桥靠着嘉陵江,老小区多,最近几年城市更新做的勤,不少住户都反映过小区夜景亮了是好事,可有的灯太晃眼,半夜拉着窗帘都透光,睡不好觉。还有物业算账,这灯开一整晚,公摊电费蹭…

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

2026/7/29 0:08:23

更多请点击: https://codechina.net 第一章:目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案 目标模糊:学得越勤,离真实能力越远 当学习目标停留在“学会AI”或“搞懂大模型”这类宽泛表述…