華為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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81805.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

<el-date-picker>組件傳參時,選中時間和傳參偏差8小時

遇到一個bug&#xff0c;不仔細看&#xff0c;都不一定能發現&#xff0c;bug描述&#xff1a;我們有一個搜索框&#xff0c;里面有一個時間選擇器&#xff0c;當我使用<el-date-picker>時&#xff0c;我發現當我選擇時分秒之后&#xff0c;顯示都正常&#xff0c;但是當…

uni-app開發特殊社交APP

uni-app開發特殊社交APP 目錄 1.展示APP功能 2.展示項目結構 3.關于我的GitHub 引言 博主最近自己在GitHub上面上傳了一個關于社交軟件的項目&#xff08;該項目早已開發完畢&#xff09;, 這個社交軟件比較特殊, 被稱之為blind-date&#xff0c; blind-date 是基于 uni-…

深入研究Azure 容器網絡接口 (CNI) overlay

啟用cni overlay 在通過portal創建aks的時候,在networking配置上,選中下面的選項即可啟用。 通過CLI創建AKS 要創建具有 CNI 覆蓋網絡的 AKS 群集,需要在創建群集時指定 --network-plugin azure 和 --network-plugin-mode 覆蓋選項。 還需要指定 --pod-cidr 選項來定義群…

Docker 部署項目

使用 Docker 部署項目是一個很好的選擇&#xff0c;可以避免服務器環境不兼容的問題&#xff0c;并且能夠實現一致性和可移植性。我會給你一個詳細的步驟&#xff0c;幫你從零開始理解 Docker&#xff0c;最終在服務器上部署 Roop 項目。 1. 安裝 Docker 首先&#xff0c;你需…

excel表格記賬 : 操作單元格進行加減乘除 | Excel中Evaluate函數

文章目錄 引用I 基礎求和∑II Excel中Evaluate函數基于字符串表達式進行計算用法案例 :基于Evaluate實現匯率計算利潤知識擴展在單元格內的換行選擇整列單元格引用 需求: 基于匯率計算利潤,調整金額以及進匯率和出匯率自動算出利潤,已經統計總利潤。 基于Evaluate實現匯率計…

vue+ts+TinyEditor 是基于 Quill 2.0 開發的富文本編輯器,提供豐富的擴展功能,適用于現代 Web 開發的完整安裝使用教程

簡介 TinyEditor 是基于 Quill 2.0 開發的富文本編輯器&#xff0c;提供豐富的擴展功能&#xff0c;適用于現代 Web 開發。具備模塊化設計、輕量級架構和高度可定制化特性&#xff0c;支持多種插件擴展&#xff0c;滿足不同場景需求。 核心特性 基于 Quill 2.0 的現代化架構模…

matlab實現激光腔長計算滿足熱透鏡效應

激光腔長計算與熱透鏡效應補償 在全固態激光器中&#xff0c;熱透鏡效應是一個重要的問題&#xff0c;因為它會影響激光的光束質量和輸出功率。以下是如何計算激光腔長并考慮熱透鏡效應的方法&#xff0c;以及一些補償技術。 1. 激光腔長計算 激光腔長的計算需要考慮激光晶體…

Science Robotics 具身智能驅動的空中物理交互新范式:結合形態和傳感,與非結構化環境進行穩健交互

隨著科技的飛速發展&#xff0c;無人機技術已從單純的遠程感知擴展到與環境的物理交互領域&#xff0c;為可持續發展目標的實現提供了新的可能性。傳統的空中物理交互方法依賴于復雜的控制策略和精確的環境建模&#xff0c;盡管能夠實現高精度操作&#xff0c;但其在非結構化自…

圖神經網絡在信息檢索重排序中的應用:原理、架構與Python代碼解析

現代信息檢索系統和搜索引擎普遍采用兩階段檢索架構&#xff0c;在人工智能應用中也被稱為檢索增強生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;。在初始檢索階段&#xff0c;系統采用高效的檢索方法&#xff0c;包括詞匯檢索算法&#xff08;如BM25&…

List 源碼翻譯

List 源碼翻譯-jdk1.8 翻譯來自 AI 大模型。 全部源碼翻譯下載 /** 版權所有 (c) 1997, 2014, Oracle 和/或其附屬公司。保留所有權利。* ORACLE 專有/機密。使用受許可條款約束。*********************/package java.util;import java.util.function.UnaryOperator;/*** 有序…

Vscode 解決 #include <> 找不到的問題

本人遇到的情況, 使用 ROS 的過程中, 發現 #include <pcl/point_types.h> 不被 VScode 識別, 在 AI 的幫助下解決了該問題, 現總結如下: 1. 查看是否有相應的文件 Linux 下, point_types.h 的存儲路徑一般為: /usr/include/pcl-1.x (我的路徑是 /usr/include/pcl-1.12)…

霹靂吧啦Wz_深度學習-圖像分類篇章_1.1 卷積神經網絡基礎_筆記

深度學習-圖像分類篇章 參考筆記 卷積神經網絡 英文&#xff1a;Convolutional Neural Network&#xff0c;CNN雛形&#xff1a;1998年LeCun的LeNet5&#xff0c;第一個卷積神經網絡包含&#xff1a; 卷積層&#xff1a;Convolutions下采樣層&#xff1a;Subsampling全連階層…

基于多模態腦電、音頻與視覺信號的情感識別算法【Nature核心期刊,EAV:EEG-音頻-視頻數據集】

簡述 理解情感狀態對于開發下一代人機交互界面至關重要。社交互動中的人類行為會引發受感知輸入影響的心理生理過程。因此&#xff0c;探索大腦功能與人類行為的努力或將推動具有類人特質人工智能模型的發展。這里原作者推出一個多模態情感數據集&#xff0c;包含42名參與者的3…

理解并解決高丟包率問題,構建清晰流暢的實時音視頻通話

丟包作為數字通信中的重要干擾因素&#xff0c;常常潛伏在表面之下&#xff0c;卻嚴重影響性能&#xff0c;將清晰的對話變的模糊不清&#xff0c;將連貫的演示變的斷斷續續。因此&#xff0c;對音視頻通話相關應用的開發者來說&#xff0c;理解丟包率非常重要。 什么是丟包&am…

RDS PostgreSQL手動刪除副本集群副本的步驟

由于PostgreSQL不支持直接刪除副本集群&#xff0c;而是需要先將副本集群升級到主實例(區域集群)&#xff0c;然后在逐一將寫入器實例刪除&#xff0c;然后才可以刪除副本集群 查看現有的主從實例集群 將副本集群提升到區域集群 選擇副本集群–>操作–>提升 提升只讀副本…

ElementUI表單驗證指南

ElementUI 是一套基于 Vue.js 的組件庫&#xff0c;提供了豐富的表單組件和驗證功能。其表單驗證通過 el-form 組件結合 rules 規則實現&#xff0c;支持同步和異步驗證。 基本表單驗證實現 在 ElementUI 中&#xff0c;表單驗證需要配置 el-form 的 rules 屬性&#xff0c;并…

通過ansible playbook創建azure 資源

安裝 Ansible 在 macOS 上 Ansible 可以通過多種方式在 macOS 上安裝,推薦使用 pip 或 Homebrew。 使用 Homebrew 安裝 Ansible 運行以下命令: brew install ansible使用 pip 安裝 Ansible 確保 Python 已安裝(macOS 通常自帶 Python),然后運行: pip install ansible…

Spring框架學習day4--Spring集成Mybatis(IOC)

Spring集成Mybatis1.添加jar包&#xff08;pom.xml&#xff09;2.配置sqlSessionFactiory&#xff08;spring.xml)3.再service類中注入Dao代理接口4.測試類5文件結構 Spring集成Mybatis Spring集成Mybatis其核心是將SqlSessionFactory交由Spring管理&#xff0c;并由 Spring管理…

可靠數據傳輸原理

目錄 構造可靠數據傳輸協議 一、rdt1.0&#xff1a;理想信道下的可靠傳輸 核心假設與功能 二、rdt 2.0&#xff1a;帶差錯檢測的停等協議 核心假設與功能 三、rdt 2.1&#xff1a;修復 ACK/NAK 不可靠性 核心改進 四、rdt 2.2&#xff1a;純 ACK 實現的可靠傳輸 核心改…