华为OD机试真题——Boss的收入(分销网络提成计算)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型
本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》
华为OD机试真题《Boss的收入(分销网络提成计算)》:
文章快捷目录
题目描述及说明
Java
python
JavaScript
C
GO
题目名称:Boss的收入(分销网络提成计算)
- 知识点:树遍历、哈希表、递归/DFS
- 时间限制:1秒
- 空间限制:256MB
- 语言限制:不限
题目描述
一个XX产品行销总公司采用分级分销模式,仅有一个boss(顶级分销商),下设若干一级分销商,每个一级分销商又可能发展多级下级分销商。每个分销商有唯一的上级。规则如下:
- 收入上交规则:
- 每月,下级需将自身收入(含下级上交部分)每满100元上交15元给直接上级。
- 例如:收入100元上交15元;收入199元(不足200)上交15元;收入200元上交30元。
- 输入格式:
- 第一行为关系数量N,后续N行每行为
分销ID 上级分销ID 收入
,表示分销商及其直接上级的初始收入。 - 分销ID范围:065535,收入范围:065535元。
- 保证输入无环路,且仅有一个boss(无上级的分销商)。
- 第一行为关系数量N,后续N行每行为
- 输出要求:
- 输出boss的ID和总提成收入(仅计算下级上交部分,不包含boss自身收入)。
示例
输入:
5
1 0 100
2 0 199
3 0 200
4 0 200
5 0 200
输出:
0 120
解释:
- Boss(ID=0)的提成来自:
- ID=1:100→15元
- ID=2:199→15元
- ID=3/4/5:200→30元×3=90元
- 总计:15+15+90=120元
Java
问题分析
我们需要计算分销网络中顶级分销商(boss)的总提成收入。每个分销商需要将自身收入(包括下级上交的部分)每满100元上交15元给直接上级。boss的提成来自所有直接下级上交的金额总和。
解题思路
- 输入处理:读取分销商关系数据,构建树结构。
- 树结构构建:识别boss节点(无上级的分销商),并建立父子关系。
- 递归计算:通过深度优先搜索(DFS)计算每个节点的上交金额,累加得到boss的总提成。
代码实现
import java.util.*;public class Main {static class Node {int id;int initialIncome;List<Node> children;public Node(int id, int initialIncome) {this.id = id;this.initialIncome = initialIncome;this.children = new ArrayList<>();}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();// 保存分销商ID与上级ID、初始收入的映射关系Map<Integer, Integer> parentMap = new HashMap<>();Map<Integer, Integer> incomeMap = new HashMap<>();for (int i = 0; i < N; i++) {int id = scanner.nextInt();int parent = scanner.nextInt();int income = scanner.nextInt();parentMap.put(id, parent);incomeMap.put(id, income);}// 收集所有分销商IDSet<Integer> allIds = new HashSet<>(parentMap.keySet());// 找到boss的ID(其上级不在所有分销商ID中)int bossId = -1;for (int parentId : parentMap.values()) {if (!allIds.contains(parentId)) {bossId = parentId;break;}}// 创建所有节点(包括boss)Map<Integer, Node> nodeMap = new HashMap<>();Node bossNode = new Node(bossId, 0); // boss初始收入为0nodeMap.put(bossId, bossNode);// 创建其他分销商节点for (int id : parentMap.keySet()) {nodeMap.put(id, new Node(id, incomeMap.get(id)));}// 建立父子关系for (int id : parentMap.keySet()) {int parentId = parentMap.get(id);Node parent = nodeMap.get(parentId);Node child = nodeMap.get(id);parent.children.add(child);}// 计算boss的总提成int totalCommission = 0;for (Node child : bossNode.children) {totalCommission += dfs(child);}System.out.println(bossId + " " + totalCommission);}// DFS递归计算每个节点的上交金额private static int dfs(Node node) {int totalContribution = node.initialIncome; // 初始收入for (Node child : node.children) {totalContribution += dfs(child); // 累加所有下级的上交金额}int up = (totalContribution / 100) * 15; // 计算上交金额return up;}
}
代码详解
-
数据结构定义:
Node
类表示分销商节点,包含ID、初始收入和子节点列表。
-
输入处理:
- 读取输入数据,保存每个分销商的上级ID和初始收入到
parentMap
和incomeMap
。
- 读取输入数据,保存每个分销商的上级ID和初始收入到
-
确定boss的ID:
- 遍历所有上级ID,找到不在分销商ID集合中的那个ID,即为boss的ID。
-
构建树结构:
- 创建所有分销商节点,包括boss节点(初始收入为0)。
- 根据父子关系建立树结构,将每个节点添加到其父节点的子节点列表中。
-
递归计算上交金额:
dfs
函数递归计算每个节点的总贡献(自身收入 + 下级上交总和),并返回上交金额。
-
输出结果:
- 累加boss所有直接下级的上交金额,得到总提成并输出。
示例测试
示例1:
输入:
5
1 0 100
2 0 199
3 0 200
4 0 200
5 0 200
输出:
0 120
解析:boss的ID为0,总提成来自各下级的上交总和(15+15+30×3=120)。
示例2:
输入:
2
1 2 100
2 3 200
输出:
3 30
解析:boss的ID为3,提成来自下级2上交的30元。
示例3:
输入&#x
相关文章:

华为OD机试真题——Boss的收入(分销网络提成计算)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...
微软云如何申请使用
微软云(Azure)新手“开荒”指南:5步搞定账户,直达云端! 还在为云计算的复杂门槛发愁吗?别担心!当全球83%的企业都在加速“上云”,微软智能云Azure凭借其在全球34个区域、200服务的庞…...

历年西北工业大学计算机保研上机真题
2025西北工业大学计算机保研上机真题 2024西北工业大学计算机保研上机真题 2023西北工业大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 计算整数乘积 题目描述 给定 n n n 组数,每组两个整数,输出这两个整数的乘积。 …...

使用pnpm、vite搭建Phaserjs的开发环境
首先,确保你已经安装了 Node.js 和 npm。然后按照以下步骤操作: 一、使用pnpm初始化一个新的 Vite 项目 pnpm create vite 输入名字 选择模板,这里我选择Vanilla,也可以选择其他的比如vue 选择语言 项目新建完成 二、安装相关依赖 进入项…...

intra-mart执行java方法笔记
一、前言 最近在用intra-mart,感觉官方文档不明不白的,很难搜。 想在intra-mart里执行java,找了半天,终于试出来了。 在此总结一下。 想看官网文档,这个是地址: https://document.intra-mart.jp/library…...

在 Vue 2中使用 dhtmlxGantt 7.1.13组件,并解决使用时遇到的问题汇总.“dhtmlx-gantt“: “^7.1.13“,
一、最终实现的结果gif展示 二、开发步骤简介 1、vue中引用甘特图包dhtmlx-gantt // 可根据项目版本载入适配的版本 npm install dhtmlx-gantt7.1.132、vue文件中引入 <script> import { gantt } from dhtmlx-gantt/codebase/dhtmlxgantt.js import dhtmlx-gantt/code…...

【C++高级主题】命令空间(三):未命名的命名空间
目录 一、未命名的命名空间的基本概念 1.1 定义与特点 1.2 基本语法 1.3 访问方式 1.4 未命名的命名空间的作用 二、未命名的命名空间与静态声明的比较 2.1 静态声明的作用 2.2 未命名的命名空间的优势 2.3 示例代码比较 2.4. 未命名的命名空间的作用域和链接属性 三…...
鸿蒙OSUniApp 开发支持图片和视频的多媒体展示组件#三方框架 #Uniapp
使用 UniApp 开发支持图片和视频的多媒体展示组件 前言 在现代移动应用中,图片和视频已成为内容展示的主流形式。一个优秀的多媒体展示组件不仅能提升用户体验,还能增强产品的互动性和视觉冲击力。随着鸿蒙(HarmonyOS)生态的不断…...

VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理
一、软件介绍 文末提供程序和源码下载 VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理 二、什么是 VoltAgent? AI 代理框架提供了构建由自主代理提供支持的应用程序所需的基础结构和工具。这些代理通常由大型语言模型 (&am…...
数据中台(大数据平台)之数据仓库建设
数据中台作为企业数据管理的核心枢纽,应支持并促进企业级数据仓库的建设,确保数据的有效整合、治理和高效应用。在建设数据仓库的过程中,设计和规划显得尤为重要,需要深入理解业务需求,制定合理的技术架构,…...
如何使用DeepSpeed来训练大模型
🔥 DeepSpeed是什么? DeepSpeed 是微软开源的一个 分布式训练加速库。 能帮助我们: 高效训练大模型(百亿、千亿参数规模) 节省显存、加速训练 支持 ZeRO 优化器、Offload、混合精度(FP16/BF16࿰…...
道可云人工智能每日资讯|《北京市人工智能赋能新型工业化行动方案(2025年)》发布
道可云人工智能&元宇宙每日简报(2025年5月28日)讯,今日人工智能&元宇宙新鲜事有: 河南:打造“AI智慧文旅”沉浸式体验新空间,推动5GAR/VR在文旅消费场景应用 近日,河南省人民政府办公…...

Unity 中实现首尾无限循环的 ListView
之前已经实现过: Unity 中实现可复用的 ListView-CSDN博客文章浏览阅读5.6k次,点赞2次,收藏27次。源码已放入我的 github,地址:Unity-ListView前言实现一个列表组件,表现方面最核心的部分就是重写布局&…...

mongodb集群之副本集
目录 1. 适用场景备份高可用性 2. 集群搭建如何搭建资源规划根据资源完成各节点conf文件的配置启动各个mongodb节点初始化集群信息 搭建实例Linux搭建实例(待定)Windows搭建实例 3. 副本集基础操作4.集群平滑升级 1. 适用场景 备份 1)服务器…...

基于微服务架构的社交学习平台WEB系统的设计与实现
设计(论文)题目 基于微服务架构的社交学习平台WEB系统的设计与实现 摘 要 社交学习平台 web 系统要为学习者打造一个开放、互动且社交性强的在线教育环境,打算采用微服务架构来设计并实现一个社交学习平台 web 系统,以此适应学…...
window10下docker方式安装dify步骤
window10下docker方式安装dify步骤(稳定后考虑部署至linux中) 教程:https://blog.csdn.net/qq_49035156/article/details/143264534 教程:https://blog.csdn.net/m0_51171437/article/details/146069890 0、资源要求 ---windows…...
Spark SQL进阶:解锁大数据处理的新姿势
目录 一、Spark SQL,为何进阶? 二、进阶特性深剖析 2.1 窗口函数:数据洞察的新视角 2.2 高级聚合:挖掘数据深度价值 2.3 自定义函数(UDF 和 UDTF):拓展功能边界 三、性能优化实战 3.1 数…...

放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!
端午节的到来和毕业季的临近,让很多人开始计划出游或长途旅行。而在旅途中,一款好用耐用的充电宝可以省不少事。今天,我们就来聊聊放假带出门的充电宝买哪种好用耐用,看看为什么倍思超能充35W更适合带出门~ 一、为什么需要一款好用…...
云原生DMZ架构实战:基于AWS CloudFormation的安全隔离区设计
在云时代,传统的DMZ(隔离区)概念已经演变为更加灵活和动态的架构。本文通过解析一个实际的AWS CloudFormation模板,展示如何在云原生环境中构建现代化的DMZ安全架构。 1. 云原生DMZ的核心理念 传统DMZ是网络中的"缓冲区",位于企业内网和外部网络之间。而在云环境…...
小工具合集
Freetool.tools - Overview Freetool.tools is a 100% free online utility website offering a wide range of handy tools for everyday tasks. It focuses on simplicity, instant access, and zero cost—no signup, ads, or paywalls. ✅ Key Features & Strengths …...

AI智能体策略FunctionCalling和ReAct有什么区别?
Dify 内置了两种 Agent 策略:Function Calling 和 ReAct,但二者有什么区别呢?在使用时又该如何选择呢?接下来我们一起来看。 1.Function Calling Function Call 会通过将用户指令映射到预定义函数或工具,LLM 先识别用…...

改进自己的图片 app
1. 起因, 目的: 前面我写过一个图片 app , 最新做了些改动。 把原来的一列,改为3列, 继续使用瀑布流手机上使用,更流畅,横屏显示为2列。 2. 先看效果 3. 过程: 过程太细碎了,这里只是做一下…...
docker不用dockerfile
好的!既然你不想使用 Dockerfile,我们就完全不写 Dockerfile,改用你 Leader 提到的思路: 用基础镜像启动一个容器 → 手动在容器里安装依赖和复制项目 → 保存为新镜像 这个方式更直观,就像“你进入容器自己配置环境&a…...

Uniapp+UView+Uni-star打包小程序极简方案
一、减少主包体积 主包污染源(全局文件依赖)劲量独立导入 componentsstaticmain.jsApp.vueuni.css 分包配置缺陷,未配置manifest.json中mp-weixin节点 "usingComponents" : true,"lazyCodeLoading" : "requiredC…...
深度学习篇---Pytorch框架下OC-SORT实现
下面将详细介绍如何基于 PyTorch 框架实现 OC-SORT(Observation-Centric SORT)算法。OC-SORT 是一种高性能的多目标跟踪算法,特别适用于复杂场景下的目标跟踪。我们将从算法原理到具体实现逐步展开。 1. 算法概述与核心原理 OC-SORT 在传统…...
STM32 HAL库SPI读写W25Q128(软件模拟+硬件spi)
1. 引言 在嵌入式系统开发中,SPI(Serial Peripheral Interface)总线是一种常用的串行通信协议,用于在微控制器和外部设备之间进行高速数据传输。W25Q128 是一款常见的 SPI Flash 芯片,具有 128Mbit(16MB&a…...

算法题(159):快速幂
审题: 本题需要我们计算出(a^b)%c的值,并按照规定格式输出 思路: 方法一:暴力解法 我们直接循环b次计算出a^b,然后再取余c,从而得出最终结果 时间上:会进行2^31次,他的数量级非常大,…...

【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布
在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard,特别推出嵌入式人工智…...

基于javaweb的SpringBoot体检管理系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Mac Python 安装依赖出错 error: externally-managed-environment
Mac Python 使用 ip3 install -r requirements.txt 出错 This environment is externally managed ╰─> To install Python packages system-wide, try brew installxyz, where xyz is the package you are trying toinstall.If you wish to install a Python library th…...