华为OD机试统一考试D卷C卷 - 虚拟游戏理财

题目描述

在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。

现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。

你要在可接受范围内选择最优的投资方式获得最大回报。

备注:

  • 在虚拟游戏中,每项投资风险值相加为总风险值;
  • 在虚拟游戏中,最多只能投资2个理财产品;
  • 在虚拟游戏中,最小单位为整数,不能拆分为小数;
  • 投资额*回报率=投资回报

输入描述

第一行:

  • 产品数(取值范围[1,20])
  • 总投资额(整数,取值范围[1, 10000])
  • 可接受的总风险(整数,取值范围[1,200])

第二行:产品投资回报率序列,输入为整数,取值范围[1,60]

第三行:产品风险值序列,输入为整数,取值范围[1, 100]

第四行:最大投资额度序列,输入为整数,取值范围[1, 10000]

输出描述

每个产品的投资额序列

用例

输入

5 100 10

10 20 30 40 50

3 4 5 6 10

20 30 20 40 30

输出

0 30 0 40 0

说明

投资第二项30个单位,第四项40个单位,总的投资风险为两项相加为4+6=10

Java

import java.util.Arrays;
import java.util.Scanner;
import java.util.StringJoiner;

public class Main {
    public static void main(String[] args) {
        // 创建Scanner对象用于获取用户输入
        Scanner sc = new Scanner(System.in);
        // 读取一行输入并将其分割为字符串数组,然后转换为整数数组
        int[] tmp = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 获取投资项目数量m、总投资额N和风险容忍度X
        int m = tmp[0];
        int N = tmp[1];
        int X = tmp[2];
        // 读取每个项目的预期回报率
        int[] returns = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 读取每个项目的风险值
        int[] risks = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 读取每个项目的最大投资额
        int[] maxInvestments = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        // 初始化最大回报为0
        int maxReturn = 0;
        // 初始化最大回报对应的投资方案数组
        int[] bestInvestments = new int[m];

        // 遍历所有项目
        for (int i = 0; i < m; i++) {
            // 如果单个项目的风险在容忍度范围内
            if (r

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试刷题 文章被收录于专栏

华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

##&nbsp;1.&nbsp;题目描述如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的![img](https://www.nowcoder.com/equation?tex=%5Cbegin%7Bequation*%7D%0A%0AC_%7Bij%7D%20%3D%20%5Csum_%7Bk%3D0%7D%5E%7By-1%7DA_%7Bik%7D*B_%7Bkj%7D%0A%0A%5Cend%7Bequation*%7D%20(%E5%85%B6%E4%B8%AD0%20%5Cleq%20i%20%3C%20x%2C%200%20%5Cleq%20j%20%3C%20z))矩阵的大小不超过100*100###&nbsp;输入描述:第一行包含一个正整数x,代表第一个矩阵的行数第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数第三行包含一个正整数z,代表第二个矩阵的列数之后x行,每行y个整数,代表第一个矩阵的值之后y行,每行z个整数,代表第二个矩阵的值示例1:```输入:&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;2&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;2&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;3输出:&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;13&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;11说明:&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;2&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;2&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;乘以&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;等于&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;13&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;11&nbsp;```
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务