华为OD机试真题 新系统 2026-07-12 PythonJS 实现【软件依赖树】
目录题目思路Code题目题目内容在软件项目开发中不同版本组件之间会互相引用组件依赖组件形成一棵从根节点展开的依赖树。请对当前项目的组件依赖关系进行分析按项目组件依赖顺序输出最终有效的组件版本列表。输出顺序要求从根节点开始上层组件依赖先输出如果同层依赖则父组件先出现的优先输出父组件相同的按依赖出现顺序输出。依赖组件如果多次出现只保留第一次出现的顺序位置。同一组件如果有不同版本以首次依赖的组件版本作为输出。输入描述第一行是项目直属依赖 directDeps格式为 组件名:版本号:排除组件列表。第二行是全局组件依赖 depRules格式为 组件名:依赖组件名:依赖组件版本号:排除组件列表。输入列表顺序为依赖声明顺序。组件名和版本号由字母数字组成且非空。排除组件列表以英文逗号分隔可为空。输出描述输出符合依赖顺序要求的项目依赖组件列表格式为 组件名:版本号。多个组件之间用空格分隔。样例 1输入a:v1:输出a:v1说明项目仅依赖一个无传递依赖的组件。样例 2输入a:v1: b:v1:a:c:v1: b:d:v1: d:c:v2:输出a:v1 b:v1 c:v1 d:v1说明上层依赖先输出同层依赖按父组件出现顺序和依赖声明顺序输出。样例 3输入a:v1:ba:c:v1: a:b:v1: b:d:v1:输出a:v1 c:v1说明组件 a 指定排除 b因此 b 及其子依赖不出现。思路依赖顺序本质上是从项目直属依赖出发的层序遍历因此可以使用队列按层处理。每个队列元素携带当前路径上的排除集合展开子依赖时如果子组件被排除就跳过整棵子树。用集合记录已经输出过的组件名保证同一组件只保留第一次出现的位置和版本。Codeimport sys from collections import defaultdict, deque def exclusions(value): # 空排除列表表示当前路径不额外屏蔽任何组件。 return set(value.split(,)) if value else set() def parse_direct(token): parts token.split(:) return parts[0], parts[1], exclusions(parts[2] if len(parts) 2 else ) def parse_rule(token): parts token.split(:) return parts[0], parts[1], parts[2], exclusions(parts[3] if len(parts) 3 else ) def solve(direct_deps, dep_rules): rules defaultdict(list) for token in dep_rules: name, dep_name, version, blocked parse_rule(token) # 同一父组件的依赖按输入声明顺序保存。 rules[name].append((dep_name, version, blocked)) ans [] seen set() # 队列天然表达“上层依赖先输出、同层按入队顺序输出”的要求。 queue deque(parse_direct(token) for token in direct_deps) while queue: name, version, blocked queue.popleft() if name in seen: # 组件去重以首次出现为准后续版本或环路都不再输出。 continue seen.add(name) ans.append(f{name}:{version}) for dep_name, dep_version, dep_blocked in rules.get(name, []): # 当前路径排除的组件整棵子树都不能进入队列。 if dep_name in blocked: continue merged_blocked set(dep_blocked) merged_blocked.update(blocked) # 排除列表向下传递。 queue.append((dep_name, dep_version, merged_blocked)) return ans lines sys.stdin.read().splitlines() # 第一行和第二行分别解析保留每行内部的声明顺序。 direct lines[0].split() if len(lines) 0 and lines[0].strip() else [] rules lines[1].split() if len(lines) 1 and lines[1].strip() else [] print( .join(solve(direct, rules)))JSconst fs require(fs); function exclusions(value) { const ans new Set(); if (!value) return ans; // 空排除列表直接返回空集合非空时再按逗号拆分。 for (const name of value.split(,)) ans.add(name); return ans; } const lines fs.readFileSync(0, utf8).split(/\r?\n/); // 第一行是直属依赖第二行是全局依赖规则两者不能混在一起解析。 const directDeps lines[0] lines[0].trim() ? lines[0].trim().split(/\s/) : []; const depRules lines[1] lines[1].trim() ? lines[1].trim().split(/\s/) : []; const rules new Map(); for (const token of depRules) { const parts token.split(:); // 同一父组件下按输入顺序保留依赖。 if (!rules.has(parts[0])) rules.set(parts[0], []); rules.get(parts[0]).push({ name: parts[1], version: parts[2], blocked: exclusions(parts[3] || ) }); } const queue directDeps.map(token { const parts token.split(:); // 直属依赖先入队保证输出时根节点顺序与输入一致。 return {name: parts[0], version: parts[1], blocked: exclusions(parts[2] || )}; }); const seen new Set(); const ans []; while (queue.length) { const cur queue.shift(); // 首次出现决定版本再次遇到同名组件时只负责去重不覆盖答案。 if (seen.has(cur.name)) continue; seen.add(cur.name); ans.push(${cur.name}:${cur.version}); for (const dep of rules.get(cur.name) || []) { // 当前路径排除的组件整棵子树都跳过。 if (cur.blocked.has(dep.name)) continue; const merged new Set(dep.blocked); for (const item of cur.blocked) merged.add(item); // 排除列表向下传递。 queue.push({name: dep.name, version: dep.version, blocked: merged}); } } console.log(ans.join( ));【华为od机试真题PythonJSJavaGo合集】【超值优惠】Py/JS/Java/Go合集【华为od机试真题Python】Python真题题库【华为od机试真题JavaScript】JavaScript真题题库【华为od机试真题JavaGo】JavaGo真题题库【华为od机试真题C】C真题题库【华为od机试真题C语言】C语言真题题库【华为od面试手撕代码题库】面试手撕代码题库【华为od机试面试交流群】【文章底部有二维码链接可扫码加交流群】华为OD机试:二本院校有机会吗? 有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

相关新闻

ArcGIS空间统计实战:用标准差椭圆洞察城市设施分布格局

ArcGIS空间统计实战:用标准差椭圆洞察城市设施分布格局

1. 标准差椭圆:城市设施分布的"体检报告" 第一次听说标准差椭圆时,我正盯着电脑屏幕上的共享单车分布图发愁。密密麻麻的停车点像撒了一地的芝麻,根本看不出规律。直到同事扔给我这个工具,才恍然大悟——原来空间分析可…

2026/7/16 23:34:59阅读更多 →
LED驱动电源核心技术解析与应用指南

LED驱动电源核心技术解析与应用指南

1. LED驱动电源的基础认知LED驱动电源作为LED照明系统的核心部件,其重要性相当于人体心脏与血液循环系统的关系。就像心脏需要根据身体需求调节血压和血流速度一样,驱动电源需要精确控制电流和电压来保证LED灯珠的正常工作。在实际工程项目中&#xff0c…

2026/7/16 23:34:59阅读更多 →
cann/asc-devkit SIMD Reg比较选择

cann/asc-devkit SIMD Reg比较选择

# Compares 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https:/…

2026/7/16 23:29:59阅读更多 →
【大白话说Java面试题 第177题】【07_Redis篇】第13题:Redis 的持久化机制有哪些?优缺点说说

【大白话说Java面试题 第177题】【07_Redis篇】第13题:Redis 的持久化机制有哪些?优缺点说说

📌 PDF:大白话说Java面试题 — 07_Redis篇 第13题:Redis 的持久化机制有哪些?优缺点说说 📚 回答: 核心考点: Redis 持久化是保障数据安全的核心机制,大厂面试不会只问"RDB 和…

2026/7/17 0:30:03阅读更多 →
Android随笔-startServicebindService

Android随笔-startServicebindService

一、核心区别对比 特性startService()bindService()启动方式直接启动,无需组件绑定需要与组件(Activity/Fragment)绑定生命周期onCreate() → onStartCommand()onCreate() → onBind()与调用者关系调用者与 Service 无直接关联调用者与 Serv…

2026/7/17 0:30:03阅读更多 →
我即世界:很多你以为的“婚姻之苦”,本质上只是人生之苦:穿衣不是为了遮羞,是老人在为自己的老去找一个道德的借口掩盖自己的老去,好比老虎不会暴漏自己的伤口给竞争对手一样,动物界没有穿衣一说

我即世界:很多你以为的“婚姻之苦”,本质上只是人生之苦:穿衣不是为了遮羞,是老人在为自己的老去找一个道德的借口掩盖自己的老去,好比老虎不会暴漏自己的伤口给竞争对手一样,动物界没有穿衣一说

婚姻背锅的真相:你感受到的不幸,是一场被多方合谋的认知陷阱 前阵子那句“普通人本来就很难获得幸福,只不过大家都将它归于婚姻”戳中了无数人。 但很少有人往下再问一层: 为什么我们会下意识把所有不如意都甩锅给婚姻? “结婚=人生圆满”的执念到底是谁灌输给我们的? 铺…

2026/7/17 0:30:03阅读更多 →
我不介意被人讨厌,渴望被人喜欢才是弱点:选工作不用听亲戚说体不体面;过日子不用听别人评价会遵守社会规范,自己的体验最重要,同样对方也要有这个意识

我不介意被人讨厌,渴望被人喜欢才是弱点:选工作不用听亲戚说体不体面;过日子不用听别人评价会遵守社会规范,自己的体验最重要,同样对方也要有这个意识

我不介意被人讨厌:渴望被喜欢,才是一个人最大的弱点 目录 我不介意被人讨厌:渴望被喜欢,才是一个人最大的弱点 穿衣服:舒服比“别人眼里的好看”重要 选工作:需求比“别人嘴里的体面”重要:其实根本没有什么好工作:因为好工作轮不到你,你不知道是不是好工作就是坏工作…

2026/7/17 0:30:03阅读更多 →
爬虫转大模型:从上线前检查开始讲

爬虫转大模型:从上线前检查开始讲

聊《大模型岗位变了,爬虫工程师该补的还是算法吗?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值…

2026/7/17 0:30:03阅读更多 →
写网文卡文缺灵感?全流程 AI 辅助工具分层搭配,新手全职作者通用(2026年新版)

写网文卡文缺灵感?全流程 AI 辅助工具分层搭配,新手全职作者通用(2026年新版)

导语随着人工智能技术持续落地文创领域,AI 辅助写作逐步成为网文作者、传统文学创作者、编剧以及非虚构书籍撰稿人的日常创作方式。当下市场涌现出多款主打 AI 智能写作的工具产品,各类产品在功能侧重、技术架构、服务定价、适配创作题材上分化明显&…

2026/7/17 0:25:03阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →