如何在华为OD机试中获得满分?Java实现【贪心的商人】一文详解!

news/2025/2/12 8:52:41/

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
  • 2. 输入描述
  • 3. 输出描述
  • 4. Java算法源码
  • 5. 测试
  • 6.解题思路

1. 题目描述

商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index],每种商品的价格在每天是item_price[item_index][day],通过对商品的买进和卖出获取利润,请给出商人在days天内能获取到的最大利润。

注:同一件商品可以反复买进和卖出;

2. 输入描述

3 //输入商品的数量 number
3 // 输入商人售货天数 days
4 5 6 //输入仓库限制每件商品的最大持有数量是itemlindex]
1 2 3 // 输入第一件商品每天的价格
4 3 2 // 输入第二件商品每天的价格
1 5 3 // 输入第三件商品每天的价格

3. 输出描述

32//输出商人在这段时间内的最大利润

4. Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);String number = sc.nextLine();int num = Integer.parseInt(number);String str = sc.nextLine();String[] arrs = str.split(" ");int[] arr = new int[arrs.length];for (int i = 0; i < arr.length; i++) {arr[i] = Integer.parseInt(arrs[i]);}int sum = 0;for (int i = 0; i < num; i++) {String priceArrStr = sc.nextLine();String[] priceArr = priceArrStr.split(" ");int max = 0;for (int j = 1; j < priceArr.length; j++) {int current = Integer.parseInt(priceArr[j]);int pre = Integer.parseInt(priceArr[j-1]);int profit = current - pre;max += Math.max(profit, 0);}sum += max * arr[i];}System.out.println(sum);
}

5. 测试

在这里插入图片描述

6.解题思路

  1. 首先读取输入的商品数量 number 和商人售货天数 days
  2. 使用 nextLine() 方法读取每件商品的最大持有数量 item[index],并将其存储在字符串 str 中。
  3. 使用空格分隔字符串 str,将每件商品的最大持有数量转换为整数类型,并存储在数组 arr 中。
  4. 初始化变量 sum 为 0,用于存储总利润。
  5. 使用循环从 0 到 number-1,依次处理每件商品的价格:
    • 使用 nextLine() 方法读取每件商品每天的价格,将其存储在字符串数组 priceArr 中。
    • 初始化变量 max 为 0,用于存储当前商品的最大利润。
    • 使用循环从 1 到 days-1,依次计算当前商品每天的利润:
      • 将当前天的价格和前一天的价格分别转换为整数类型。
      • 计算当前天和前一天的价格差值,并将其与 0 比较取较大值。
      • 将计算得到的利润累加到 max 中。
    • 将当前商品的最大利润乘以其最大持有数量,累加到 sum 中。
  6. 输出 sum,即为商人在给定天数内能获取到的最大利润。

在这里插入图片描述


http://www.ppmy.cn/news/96539.html

相关文章

MySQL常见面试题

参考:程序员大斌、javauide、小林coding 1.事务是什么? 由多个操作组成的一个逻辑单元,逻辑单元的多个操作要么同时成功,要么同时失败。 2.事务的四大特性 原子性:一个事务内的操作统一成功或失败 一致性:一个事务执行之前和执行之后都必须处于一致性状态(两人转账…

C++四种类型转化

文章目录 static_castconst_castreinterpret_cast(重新解释)dynamic_caststatic_cast 该运算符把expression转化为type_name类型,static_cast在编译时使用类型信息执行转换,在转换执行必要时的检测(如指针越界,类型检查),但没有运行时类型检查来保证转换的安全性 用于基…

Fedora安装并配置开启SSH服务相关命令

Ubuntu参考我这篇&#xff1a;虚拟机里安装ubuntu-23.04-beta-desktop-amd64&#xff0c;开启SSH(换源、备份)&#xff0c;配置中文以及中文输入法等 一、过程 1、检测是否安装了openssh-server $ rpm -qa | grep openssh-serveropenssh-server-7.9p1-5.fc30.x86_642、如果上…

yocto开发-常见的概念

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、BitBake是什么?二、Recipes配方三、Classes四、Configurations五、Layers总结前言 本文介绍在开发过程中经常遇到的概念名词 提示:以下是本篇文章正文内容,下面案例可供参考 一、BitB…

SEO优化

SEO&#xff08;Search Engine Optimization&#xff09;是指优化网站结构&#xff0c;使其更好的被搜索引擎收录和排名。以下是一些自定义SEO优化的建议&#xff1a; 关键词研究&#xff1a;你需要了解你的网站所属行业所使用的一些关键词和短语。使用Google AdWords等工具来帮…

MySQL安装

一、下载 点开下面的链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹…

RouterOS上配置VRRP,OpenWRT上编译入keepalived

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;和keepalived都是用于实现网络高可用性的协议&#xff0c;它们可以在路由器或服务器上实现冗余&#xff0c;确保在一个节点失效时&#xff0c;另一个节点可以自动接管服务。下面是一些关于在RouterOS上配置VRRP…

android 12.0Launcher3长按拖拽时,获取当前是哪一屏,获取当前多少个应用图标

1.概述 在12.0定制化开发手机项目中,如果专门适配老年机的时候,这时客户提出要求,如果最后一屏未满时,不让拖拽到后面一屏的空屏中这样就需要获取当前是哪一屏,并且要知道当前有多少个Item,总共一屏最多多少个item 所以就需要从Workspace.java入手,来分析解决这个问题 …