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

华为OD机试真题——虚拟理财游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 200分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《虚拟理财游戏》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:虚拟理财游戏


  • 知识点:贪心算法、逻辑处理
  • 时间限制:1秒
  • 空间限制:256MB
  • 限定语言:不限

题目描述

在一款虚拟游戏中,玩家需通过投资理财产品增强资产以避免淘汰。现有一家Bank提供 m 个理财产品,每个产品有不同投资回报率、风险值和最大投资额度。玩家拥有 N 元资金,可接受的总风险值为 X。要求选择最优投资组合(最多选2个产品),在总风险不超过 X 且总投资不超过 N 的条件下,最大化投资回报(投资额×回报率)。

备注

  1. 总风险值为所选产品风险值之和;
  2. 最多投资2个产品;
  3. 投资额必须为整数;
  4. 回报=投资额×回报率。

输入描述

  • 第一行:产品数 m(1≤m≤20)、总投资额 N(1≤N≤10000)、可接受总风险 X(1≤X≤200);
  • 第二行:产品回报率序列(整数,1≤值≤60);
  • 第三行:产品风险值序列(整数,1≤值≤100);
  • 第四行:产品最大投资额度序列(整数,1≤值≤10000)。

输出描述
每个产品的投资额序列(未投资则为0)。

示例
输入:

5 100 10  
10 20 30 40 50  
3 4 5 6 10  
20 30 20 40 30  

输出:

0 30 0 40 0  

说明:投资第2、4个产品,风险4+6=10,回报30×20+40×40=2200。


Java

问题分析

题目要求选择最多两个理财产品,在总风险不超过X且总投资不超过N的条件下,最大化投资回报。需处理以下关键点:

  1. 风险控制:所选产品的风险值之和 ≤ X。
  2. 资金限制:投资额 ≤ 产品最大额度,且总和 ≤ N。
  3. 回报最大化:通过合理分配资金,使总回报最大。

解题思路

  1. 单产品选择:遍历每个产品,计算其合法投资的最大回报。
  2. 双产品组合:遍历所有产品对,确定优先级(回报率高的先投资),计算最大回报。
  3. 动态更新:维护当前最大回报及对应的投资方案。

代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入数据int m = scanner.nextInt();int N = scanner.nextInt();int X = scanner.nextInt();int[] returnRate = new int[m];for (int i = 0; i < m; i++) {returnRate[i] = scanner.nextInt();}int[] risk = new int[m];for (int i = 0; i < m; i++) {risk[i] = scanner.nextInt();}int[] maxInvest = new int[m];for (int i = 0; i < m; i++) {maxInvest[i] = scanner.nextInt();}int maxReturn = 0;int[] result = new int[m];// 处理单个产品的情况for (int i = 0; i < m; i++) {if (risk[i] > X) continue; // 风险超标跳过int invest = Math.min(maxInvest[i], N);int currentReturn = returnRate[i] * invest;if (currentReturn > maxReturn) {maxReturn = currentReturn;Arrays.fill(result, 0);result[i] = invest;}}// 处理两个产品的组合for (int i = 0; i < m; i++) {for (int j = i + 1; j < m; j++) {int totalRisk = risk[i] + risk[j];if (totalRisk > X) continue; // 总风险超标跳过// 确定投资顺序:优先投回报率高的int first, second;if (returnRate[i] >= returnRate[j]) {first = i;second = j;} else {first = j;second = i;}// 计算最大投资额int investFirst = Math.min(maxInvest[first], N);int remaining = Math.max(N - investFirst, 0);int investSecond = Math.min(maxInvest[second], remaining);// 计算总回报int total = returnRate[first] * investFirst + returnRate[second] * investSecond;// 更新最优解if (total > maxReturn) {maxReturn = total;Arrays.fill(result, 0);result[first] = investFirst;result[second] = investSecond;}}}// 输出结果for (int i = 0; i < m; i++) {System.out.print(result[i] + (i == m - 1 ? "\n" : " "));}}
}

代码解析

  1. 输入处理:读取产品数 m、总资金 N、风险阈值 X 及三个数组。
  2. 单产品遍历
    • 检查风险是否超标。
    • 计算最大投资额,更新最优解。
  3. 双产品遍历
    • 检查总风险是否超标。
    • 根据回报率确定投资顺序。
    • 计算两个产品的最大投资额及总回报。
    • 动态更新最优解。
  4. 结果输出:按格式输出每个产品的投资额。

示例测试

  1. 示例输入

    5 100 10  
    10 20 30 40 50  
    3 4 5 6 10  
    20 30 20 40 30  
    

    输出

    0 30 0 40 0  
    

    解释:选择产品2和4,总风险4+6=10,回报30×20 +40×40=2200。

  2. 测试用例1

    2 100 5  
    30 40  
    3 4  
    50 60  
    

    输出

    0 60  
    

    解释:仅选产品2(风险4 ≤5),投资60元。

  3. 测试用例2

    3 50 8  
    15 25 20  
    2 3 4  
    20 20 20  
    

    输出

    0 20 20  
    

    解释:选产品2和3,总风险3+4=7 ≤8,回报25×20 +20×20=900。


综合分析

  1. 时间复杂度

    • 单产品遍历:O(m)。
    • 双产品遍历:O(m²)。
    • 综合复杂度:O(m²),在m≤20时完全可行。
  2. 空间复杂度

    • 存储输入数组及结果数组:O(m)。
  3. 正确性

    • 严格处理风险、资金及回报率逻辑,确保最优解正确。
  4. 优势

    • 贪心策略:优先投资高回报产品,确保局部最优。
    • 全面覆盖:处理所有合法组合,不漏解。
  5. 适用性

    • 完全符合题目约束,适用于大范围输入数据。

python

问题分析

题目要求在给定资金和风险限制下,选择最多两个理财产品,使得总回报最大化。需满足总风险不超过X,总投资不超过N,且每个产品的投资额不超过其最大额度。


解题思路</

相关文章:

华为OD机试真题——虚拟理财游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

Vue-01(Vue CLI创建项目以及文件配置说明)

了解 Vue CLI 及其功能 Vue CLI 是搭建、构建和管理 Vue.js 项目的标准工具。它通过提供一致的项目结构、处理复杂的构建配置以及通过插件提供一组丰富的功能来简化开发工作流程。了解 Vue CLI 对于任何 Vue.js 开发人员来说都至关重要&#xff0c;因为它可以显着提高生产力并…...

华为云Flexus+DeepSeek征文 | DeepSeek-V3/R1商用服务开通体验全流程及使用评测

作者简介​ 我是摘星&#xff0c;一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型&#xff0c;将实际使用经验分享给大家&#xff0c;希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 开通DeepSeek-V3/R1商用服务 2.1 准…...

redis列表类型

练习命令使用&#xff0c;具体如下&#xff1a; lpush llen lrange lpoprpush lindex lset rpop linsert LPUSH命令用来向列表左边增加元素&#xff0c;返回值表示增加元素后列表的长度 127.0.0.1:6379> lpush letter A B C (integer) 3 127.0.0.1:6379> type letter …...

人工智能数学基础实验(一):智能推荐系统实战

一、实验目的 本次实验旨在通过构建用户相似度矩阵和实现个性化推荐&#xff0c;帮助我们直观理解推荐系统的核心原理及其背后的数学基础。具体目标如下&#xff1a; 运用 Python 计算用户间的评分相似度&#xff0c;掌握余弦相似度等数学工具在衡量用户偏好中的应用&#xff…...

uni-app学习笔记十二-vue3中组件传值(对象传值)

一.单对象传值 父组件定义对象的值 <template><view><UserInfo :obj"userinfo"></UserInfo></view> </template><script setup>import {ref} from "vue"const userinfo ref({name:"蛛儿",avatar:&…...

Vue.js教学第十四章:Vuex模块化,打造高效大型应用状态管理

Vuex(二):深入剖析 Vuex 模块化与高级应用 在大型 Vue 应用开发中,随着应用功能的不断扩展和复杂度的增加,状态管理的难度也随之上升。Vuex 作为 Vue.js 的官方状态管理库,提供了模块化功能,使得我们可以将状态管理逻辑拆分成多个模块,从而提高 Vuex 的可维护性和可读…...

Ubuntu/Linux 服务器上调整系统时间(日期和时间)

在 Ubuntu/Linux 服务器上调整系统时间&#xff08;日期和时间&#xff09;可以通过以下命令实现&#xff0c;具体分为 手动设置 和 自动同步&#xff08;NTP&#xff09;两种方式&#xff1a; 1. 查看当前系统时间 date或查看详细时区信息&#xff1a; timedatectl2. 手动设…...

win11 禁用/恢复 内置笔记本键盘(保证管用)

文章目录 禁用启用 禁用 1&#xff09;按下 win x&#xff0c;点击 设备管理器 2&#xff09;拔掉所有笔记本外设&#xff08;一定要都拔掉&#xff0c;不然后面禁用设备会混淆&#xff09;&#xff0c;然后右键点击 键盘 > HID Keyboard Device 2&#xff09;点击 更新…...

精度不够?光纤激光尺0.2ppm误差解锁微米级制造

当“精度焦虑”成为制造业的隐形门槛&#xff1a; 在半导体光刻中&#xff0c;1nm偏差可能导致整片晶圆报废&#xff1b; 在精密机床加工中&#xff0c;热变形让传统测量工具“失灵”…… “高精度、高稳定、抗干扰”——工业超精密制造的三大痛点&#xff0c;如何破局&#xf…...

Android 16系统源码_自由窗口(一)触发自由窗口模式

前言 从 Android 7.0 开始&#xff0c;Google 推出了一个名为“多窗口模式”的新功能&#xff0c;允许在设备屏幕上同时显示多个应用&#xff0c;多窗口模式允许多个应用同时共享同一屏幕&#xff0c;多窗口模式&#xff08;Multi Window Supports&#xff09;目前支持以下三种…...

sqli-labs第十八关——POST-UA注入

一&#xff1a;判断注入类型 先在用户名和密码框尝试判断&#xff0c;发现都得不到需要的回显 所以查看源码 可以发现username和password的输入后端都做了检查&#xff0c;没法直接注入 所以我们尝试uagent注入 UA注入&#xff1a; 没有url解码处理只识别原始空格&#xff…...

流式优先架构:彻底改变实时数据处理

近年来&#xff0c;随着现代组织的数据环境日趋复杂且高速流动&#xff0c;传统数据库系统已难以满足实时分析、物联网应用以及即时决策的需求。围绕批处理和静态数据模型设计的 RDBMS&#xff08;关系型数据库管理系统&#xff09;在架构层面缺乏实时处理能力&#xff0c;而流…...

WebSockets 在实时通信中的应用与优化

WebSockets 在实时通信中的应用与优化 1. 引言 在现代互联网应用中&#xff0c;实时通信 已成为许多场景的核心需求&#xff0c;如在线聊天、直播互动、在线游戏、实时数据推送等。而传统的 HTTP 轮询或长轮询方式往往伴随着 高延迟、资源浪费 等问题&#xff0c;使得开发者在…...

零基础教程:用 Docker + pgloader 将 MySQL 数据库迁移到 PostgreSQL

在日常开发中,可能会遇到从 MySQL 迁移到 PostgreSQL 的需求。你也许是: 正在准备从传统架构转向云原生;想使用 PostgreSQL 更强的事务与 JSON 支持;想统一团队数据库技术栈;纯粹为了尝试学习不同的数据库系统。别担心,无需手动写导出脚本,无需配置复杂工具,只需借助 D…...

mac上安装 Rust 开发环境

1.你可以按照提示在终端中执行以下命令&#xff08;安全、官方支持&#xff09;&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh然后按提示继续安装即可。 注意&#xff1a;安装过程中建议选择默认配置&#xff08;按 1 即可&#xff09;。 如果遇…...

解决RedisTemplate的json反序列泛型丢失问题

背景 在使用redisTemplate操作redis时我们针对对象的序列化通常将序列化成json存储到redis。一般如下配置 Bean ConditionalOnMissingBean public RedisTemplate<?, ?> redisTemplate(RedisConnectionFactory redisConnectionFactory, ObjectProvider<RedisT…...

【Elasticsearch】创建别名的几种方式

在 Elasticsearch 中&#xff0c;有以下几种创建索引别名的方式&#xff1a; 1. 在创建索引时指定别名 在创建索引时&#xff0c;可以直接在索引定义中指定别名。这种方式可以在索引创建的同时完成别名的绑定&#xff0c;避免后续的额外操作。 示例&#xff1a; json PUT /te…...

【JAVA】中文我该怎么排序?

&#x1f4d8; Java 中文排序教学文档&#xff08;基于 Collator&#xff09; &#x1f9e0; 目录 概述Java 中字符串排序的默认行为为什么需要 Collator使用 Collator 进行中文排序升序 vs 降序排序自定义对象字段排序多字段排序示例总结对比表附录&#xff1a;完整代码示例 …...

《C 语言字符串操作从入门到实战(下篇):strncpy/strncat/strstr 等函数原理与实现》

目录 七. strncpy函数的使用与模拟实现 7.1 strncpy函数理解 7.2 strncpy函数使用示例 7.3 strncpy函数模拟实现 八. strncat函数的使用与模拟实现 8.1 strncat函数理解 8.2 strncat函数使用示例 8.3 strncat函数模拟实现 九. strncmp函数的使用 9.1 strncmp函数理…...

百度飞桨PaddleOCR 3.0开源发布 OCR精度跃升13%

百度飞桨 PaddleOCR 3.0 开源发布 2025 年 5 月 20 日&#xff0c;百度飞桨团队正式发布了 PaddleOCR 3.0 版本&#xff0c;并将其开源。这一新版本在文字识别精度、多语种支持、手写体识别以及高精度文档解析等方面取得了显著进展&#xff0c;进一步提升了 PaddleOCR 在 OCR …...

Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用

一、FPGA 在线升级 FPGA 在线升级FLASH时&#xff0c;一般是通过逻辑生成SPI接口操作FLASH&#xff0c;当然也可以通过其他SOC经FPGA操作FLASH&#xff0c;那么FPGA就要实现在启动后对FLASH的控制。 对于7Series FPGA&#xff0c;只有CCLK是专用引脚&#xff0c;SPI接口均为普…...

数字孪生驱动的离散制造智能升级:架构设计与工程实践

针对离散制造行业多品种、小批量的生产特性&#xff0c;本文提出一种基于数字孪生的智能制造解决方案。以某国家级智能制造试点示范项目为载体&#xff0c;构建"云-边-端"协同的数字孪生系统&#xff0c;实现设备综合效率&#xff08;OEE&#xff09;提升28.7%、订单…...

9.4在 VS Code 中配置 Maven

在 VS Code 中配置 Maven 需要完成 Maven 环境安装 一、安装 Maven&#xff08;如果未安装&#xff09; 下载 Maven 访问 Apache Maven 官网&#xff0c;下载最新版本的 Maven&#xff08;如apache-maven-3.9.9-bin.zip&#xff09;。 解压文件 将下载的 ZIP 文件解压到本地目…...

mmaction2——tools文件夹下

build_rawframes.py 用法示例 python tools/data/build_rawframes.py data/videos data/frames --task rgb --level 2 --ext mp4 --use-opencv --num-worker 8总结&#xff1a; 只需要 RGB 帧&#xff0c;推荐 --use-opencv&#xff0c;简单高效&#xff0c;无需额外依赖。 …...

新能源汽车充电桩资源如何利用资源高效配置?

新能源汽车充电桩资源的高效配置是实现绿色交通转型的关键环节。随着新能源汽车保有量的快速增长&#xff0c;充电基础设施的供需矛盾日益凸显。如何优化充电桩资源布局、提升使用效率、平衡不同场景需求&#xff0c;成为当前亟待解决的问题。以下是几点关于充电桩资源高效配置…...

python 程序实现了毫米波大规模MIMO系统中的信道估计对比实验

python 程序实现了毫米波大规模MIMO系统中的信道估计对比实验 import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.models import Sequential, Model from tensorflow.keras.layers...

NTFS0x90属性和0xa0属性和0xb0属性的一一对应关系是index_entry中的index_node中VCN和runlist和bitmap

第一部分&#xff1a; 0: kd> dt _FILE_RECORD_SEGMENT_HEADER 0xc1241400 Ntfs!_FILE_RECORD_SEGMENT_HEADER 0x000 MultiSectorHeader : _MULTI_SECTOR_HEADER 0x008 Lsn : _LARGE_INTEGER 0x80e74aa 0x010 SequenceNumber : 5 0x012 Referen…...

PDF 编辑批量拆分合并OCR 识别

各位办公小能手们&#xff01;你们有没有过被PDF文件折磨得死去活来的经历&#xff1f;反正我是有&#xff0c;每次要编辑PDF&#xff0c;那叫一个费劲啊&#xff01;不过呢&#xff0c;今天我要给大家介绍一款神器——WPS PDF to Word&#xff0c;有了它&#xff0c;PDF编辑那…...

LeetCode --- 450周赛

题目列表 3550. 数位和等于下标的最小下标 3551. 数位和排序需要的最小交换次数 3552. 网格传送门旅游 3553. 包含给定路径的最小带权子树 II 一、数位和等于下标的最小下标 直接模拟计算数位和即可&#xff0c;代码如下 // C class Solution { public:int smallestIndex(ve…...