当前位置: 首页 > news >正文

华为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的收入(分销网络提成计算)


  1. 知识点:树遍历、哈希表、递归/DFS
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 语言限制:不限

题目描述

一个XX产品行销总公司采用分级分销模式,仅有一个boss(顶级分销商),下设若干一级分销商,每个一级分销商又可能发展多级下级分销商。每个分销商有唯一的上级。规则如下:

  1. 收入上交规则
    • 每月,下级需将自身收入(含下级上交部分)每满100元上交15元给直接上级。
    • 例如:收入100元上交15元;收入199元(不足200)上交15元;收入200元上交30元。
  2. 输入格式
    • 第一行为关系数量N,后续N行每行为分销ID 上级分销ID 收入,表示分销商及其直接上级的初始收入。
    • 分销ID范围:065535,收入范围:065535元。
    • 保证输入无环路,且仅有一个boss(无上级的分销商)
  3. 输出要求
    • 输出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的提成来自所有直接下级上交的金额总和。

解题思路

  1. 输入处理:读取分销商关系数据,构建树结构。
  2. 树结构构建:识别boss节点(无上级的分销商),并建立父子关系。
  3. 递归计算:通过深度优先搜索(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;}
}

代码详解

  1. 数据结构定义

    • Node类表示分销商节点,包含ID、初始收入和子节点列表。
  2. 输入处理

    • 读取输入数据,保存每个分销商的上级ID和初始收入到parentMapincomeMap
  3. 确定boss的ID

    • 遍历所有上级ID,找到不在分销商ID集合中的那个ID,即为boss的ID。
  4. 构建树结构

    • 创建所有分销商节点,包括boss节点(初始收入为0)。
    • 根据父子关系建立树结构,将每个节点添加到其父节点的子节点列表中。
  5. 递归计算上交金额

    • dfs函数递归计算每个节点的总贡献(自身收入 + 下级上交总和),并返回上交金额。
  6. 输出结果

    • 累加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

相关文章:

  • 第42节:模型优化与部署:Web服务部署(Flask, FastAPI)
  • k8s pod启动失败问题排查
  • 《AI大模型的开源与性能优化:DeepSeek R1的启示》
  • 【达梦数据库】会话sp_close关闭不掉
  • List 源码翻译
  • 3秒响应!奇兵到家南康家博会开启家居售后「即时服务」时代
  • 设计模式之原型模式
  • 基于多模态脑电、音频与视觉信号的情感识别算法【Nature核心期刊,EAV:EEG-音频-视频数据集】
  • [Java恶补day10] 560. 和为K的子数组
  • 前端高频面试题1:HTML/CSS/浏览器/计算机网络
  • LangChain 和 LangChain-ChatChat 的区别
  • fingerprint2浏览器指纹使用记录
  • 38. 自动化测试异步开发之编写客户端异步webdriver接口类
  • AST抽象语法树:从编译原理到现代编程实践的全景解析
  • LVS + Keepalived高可用群集
  • Java互联网大厂面试:从Spring Boot到Kafka的技术深度探索
  • TDengine 运维——巡检工具(安装前检查)
  • 数据结构数组总结
  • 【Dify系列教程重置精品版】第十一章:Dify与slenium
  • 3d GIS数据来源与编辑工具
  • 单页面网站卖什么好/成品网站货源1
  • 90设计网站真实稿费/seo网站培训优化怎么做
  • 邯郸做网站推广/泰安百度推广代理
  • 网站设计 现在流行的导航方式/网络营销的特点有哪些特点
  • 网站建设师/统计网站访问量
  • php网站建设的公司/便宜的seo官网优化