发布时间:2026/8/14 17:03:11
华为OD机试 - 消消乐能量碰撞(Python/JS/C/C++ 新系统 100分) 华为OD机试 新系统 统一考试题库清单持续收录中以及考点说明Python/JS/C/C。专栏导读本专栏收录于《华为OD机试真题Python/JS/C/C》。刷的越多抽中的概率越大私信哪吒备注华为OD加入华为OD刷题交流群每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景发现新题目随时更新。一、题目描述在一个充满魔法能量的消除游戏中一排排不同颜色的能量球代表不同质量/能量值静止在网格中。当玩家触发消除机制时相邻的能量球会发生相互碰撞。消除规则碰撞机制当两个相邻的能量球相遇时系统会根据它们的能量值质量进行判断。强弱判定如果两个能量球的能量值不同能量值较低的那个球会被对手的能量波吞噬从而消除。同归于尽如果两个能量球的能量值完全相同它们会引发剧烈的能量湮灭反应导致两者同时被消除。幸存条件只有能量值足够高且未发生碰撞或碰撞后存活的能量球才能留在场上继续等待下一轮消除。题目目标给定一排初始的能量球序列请模拟上述消除过程找出最终留在场上的所有能量球及其顺序。约束能量球的个数不超过 1000 个能量球的能量值是非负整数最大不超过 10000二、输入描述输入为一行字符串格式为n a1,a2,a3,...,an其中 n 表示能量球的数量方括号内为初始能量球序列的数值列表。三、输出描述输出最终留在场上的所有能量球序列以数组形式表示格式为 b1,b2,…,bm。四、测试用例测试用例11、输入53,5,5,2,32、输出33、说明3 留下5 3留下 55 5两个都消除2 留下3 2最终留下 3测试用例21、输入61,2,2,1,3,42、输出43、说明12 1 → 22 2 → 全部消失13 1 → 34 3 → 4最终输出 4。五、解题思路处理每个新能量球 current 时只需要关心当前场上是否存在一个幸存球 survivor当前没有幸存球current 直接留下。current survivor两个球同时消除场上为空。current survivor原幸存球被消除current 成为新幸存球。current survivor新球被消除原幸存球继续存在。为什么只保存一个变量就够因为每次新球与当前幸存球碰撞后结果只可能是留下其中一个两个都消失。因此任意时刻场上最多只有一个有效幸存球没有必要使用栈、队列或数组保存中间状态。六、Python算法源码importsysdefmain():linessys.stdin.read().splitlines()nint(lines[0].strip())linelines[1].strip()iflen(lines)1elsehas_survivorFalsesurvivor0ifn0andline:numsline.split(,)foriinrange(n):currentint(nums[i].strip())ifnothas_survivor:# 当前没有幸存球# 新球直接成为当前幸存球。survivorcurrent has_survivorTrueelifcurrentsurvivor:# 两个能量球数值相同# 两者同时消除场上重新为空。has_survivorFalseelifcurrentsurvivor:# 新球能量更高# 原幸存球被消除新球成为新的幸存球。survivorcurrent# current survivor 时# 新球被原幸存球消除因此不需要修改 survivor。ifhas_survivor:print(survivor)else:print()if__name____main__:main()七、JavaScript算法源码constfsrequire(fs);constinputfs.readFileSync(0,utf8).split(/\r?\n/);constnNumber((input[0]||).trim());constline(input[1]||).trim();lethasSurvivorfalse;letsurvivor0;if(n0line.length0){constnumsline.split(,);for(leti0;in;i){constcurrentNumber(nums[i].trim());if(!hasSurvivor){// 当前没有幸存球// 新进入的球直接成为当前幸存球。survivorcurrent;hasSurvivortrue;}elseif(currentsurvivor){// 能量值完全相同// 两个球同时消除。hasSurvivorfalse;}elseif(currentsurvivor){// 新球能量更高// 原幸存球被消除新球成为幸存球。survivorcurrent;}// current survivor 时// 新球被消除原 survivor 不变。}}console.log(hasSurvivor?survivor:);八、C算法源码#includestdio.h#includestdlib.h#includestring.hintmain(void){intn;if(scanf(%d,n)!1){return0;}/* * 清理读取 n 之后直到当前行末尾的字符 * 防止下面的 fgets 直接读到残留的换行符。 */intch;while((chgetchar())!\nch!EOF){}/* * n 最大为 1000每个数最大 10000 * 加上逗号后 12000 字符空间已经足够。 */charline[12000];if(fgets(line,sizeof(line),stdin)NULL){line[0]\0;}inthasSurvivor0;intsurvivor0;/* * strtok 按照逗号切分输入数据。 * 同时把 \\r 和 \\n 作为分隔符 * 兼容不同系统的换行格式。 */char*tokenstrtok(line,,\r\n);for(inti0;intoken!NULL;i){intcurrentatoi(token);if(!hasSurvivor){// 当前没有幸存球新球直接留下。survivorcurrent;hasSurvivor1;}elseif(currentsurvivor){// 两球能量相同同归于尽。hasSurvivor0;}elseif(currentsurvivor){// 新球更强消除原幸存球// 新球成为新的幸存球。survivorcurrent;}/* * current survivor 时 * 新球被消除因此 survivor 保持不变。 */tokenstrtok(NULL,,\r\n);}if(hasSurvivor){printf(%d\n,survivor);}else{printf(\n);}return0;}九、C算法源码#includeiostream#includesstream#includestring#includelimitsusingnamespacestd;intmain(){intn;cinn;// 清除读取 n 后剩余的换行内容// 防止 getline 直接读到一个空字符串。cin.ignore(numeric_limitsstreamsize::max(),\n);string line;getline(cin,line);stringstreamss(line);boolhasSurvivorfalse;intsurvivor0;for(inti0;in;i){string token;// 每次读取一个以逗号分隔的能量值。getline(ss,token,,);intcurrentstoi(token);if(!hasSurvivor){// 当前没有幸存球// 新球直接成为当前幸存球。survivorcurrent;hasSurvivortrue;}elseif(currentsurvivor){// 能量相同两球同时消除。hasSurvivorfalse;}elseif(currentsurvivor){// 新球更强// 原幸存球被消除新球成为新的幸存球。survivorcurrent;}// current survivor 时// 新球被消除原 survivor 不发生变化。}if(hasSurvivor){coutsurvivor\n;}else{cout\n;}return0;}下一篇华为OD机试真题 - 简易内存池Python/JS/C/C 新系统 200分本文收录于华为OD机试真题Python/JS/C/C刷的越多抽中的概率越大私信哪吒备注华为OD加入华为OD刷题交流群每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景发现新题目随时更新。

相关新闻

2026/8/14 16:58:11

LS-DYNA用于复合材料抗冲击分析方面的应用总结--Part 2 材料篇

各位,好久不见:距离上次写LSDYNA中关于复材抗冲击分析之建模篇已经过去三年多了。抱歉,让期待更新的朋友久等了。复合材料抗冲击分析用材料模型涉及内容太多,这个帖子仅仅是谈谈这些年自己从事复合材料冲击工作的感受,…

2026/8/14 18:13:22

如何快速完成m3u8视频下载?跨平台工具m3u8-downloader实操指南

如何快速完成m3u8视频下载?跨平台工具m3u8-downloader实操指南 【免费下载链接】m3u8-downloader 一个M3U8 视频下载(M3U8 downloader)工具。跨平台: 提供windows、linux、mac三大平台可执行文件,方便直接使用。 项目地址: https://gitcode.com/gh_mirrors/m3u8d…

2026/8/14 18:08:22

Windows激活总翻车?免费开源工具MAS实测4条路线

Windows激活总翻车?免费开源工具MAS实测4条路线 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting. 项目地址…

2026/8/14 4:27:24

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/14 4:27:24

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/14 0:00:09

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:09

VSCode高效Git管理:从入门到实战技巧

1. 为什么选择VSCode进行Git代码管理作为微软推出的轻量级代码编辑器,Visual Studio Code(简称VSCode)已经成为全球开发者使用率最高的编辑器之一。根据2023年Stack Overflow开发者调查,VSCode的市场占有率高达74.48%。它内置的Gi…

2026/8/14 4:27:24

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/14 4:27:24

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/14 4:27:24

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…