东莞网站公司推广技巧,dede 企业网站模板下载,wordpress修改语言设置,站内推广的方法题目 小王手里有点闲钱#xff0c;想着做点卖水果的小买卖。给出两个数组m、n#xff0c;用m[i]代表第i个水果的成本价#xff0c;n[i]代表第i水果能卖出的价钱#xff0c;假如现在有本钱k#xff0c;试问最后最多能赚多少钱? 说明: 1 每种水果只需买一次#xff0c;只能…题目 小王手里有点闲钱想着做点卖水果的小买卖。给出两个数组m、n用m[i]代表第i个水果的成本价n[i]代表第i水果能卖出的价钱假如现在有本钱k试问最后最多能赚多少钱? 说明: 1 每种水果只需买一次只能卖—次 2 数组m、n大小不超过50 3 数组元素为正整数不超过1000 输入描述: 1 数组m、n 2 本钱k 备注: 1 首行输入逗号分隔的数组m的元素值 2 第二行输入逗号分隔的数组n的元素值 3 第三行输入本钱 输出描述: 最多能赚取多少钱。 示例1 输入 4,2,6,4 5,3,8,7 15 输出 22 思路
这道题歧义太大了只有结合示例数据再反向推导题意
根据题意理解 按照题目原本的描述每种水果只能买一次、卖一次那一次可以买多个吧以示例数据为例明显第4种水果利润更高购买方案可以是 买3个第四类水果花了12元还剩3元卖出后可以赚3*7-49元卖出后拥有24元钱 再买12个第二类水果卖出后可以赚12*(3-212元卖出后拥有36元钱 再买6个第三类水果卖出后可以赚6*8-612元卖出后拥有48元钱 最后买12个第一类水果卖出后可以赚12元卖出后拥有60元钱 所以最多能赚的前为60-1545。 这种理解最贴合原来的题意但是明显和示例1数据不合。 根据示例数据反推 拥有15元先买第一类水果将题目限定为只能买一个水果后卖出赚1块得到16块 再买第二类水果后卖出赚1块得到17块 再买第三类水果后卖出赚2块得到19块 最后买第四类水果后卖出赚3块得到22块 所以最后输出了22完全不考虑原来15元的成本啊 按照这这种理解把每个能赚到的钱都赚到就能得到最高的利润。不能赚的钱是当前拥有的钱买不起成本价即不能进货。所以应该优先买成本低利润大的水果卖出后会使当前的钱增多下轮进货时就可能买得起当初进不了的货了。 题解
package hwod;import java.util.*;public class BuyFruit {public static void main(String[] args) {Scanner scnew Scanner(System.in);int[] m Arrays.stream(sc.nextLine().split(,)).mapToInt(Integer::parseInt).toArray();int[] n Arrays.stream(sc.nextLine().split(,)).mapToInt(Integer::parseInt).toArray();int k sc.nextInt();System.out.println(buyFruit(m, n, k));}private static int buyFruit(int[] m, int[] n, int k) {//第一个数代表成本价第二个数代表售价Listint[] list new ArrayList();for (int i 0; i m.length; i) {if (n[i] m[i]) {//只存有利润的水果list.add(new int[]{m[i], n[i]});}}list.sort((o1, o2) - {if(o1[0]!o2[0]) return o1[0] - o2[0];return o2[1] - o1[1];});for (int i 0; i list.size(); i) {if (k list.get(i)[0]) {k list.get(i)[1] - list.get(i)[0];}}return k;}
}
推荐
如果你对本系列的其他题目感兴趣可以参考华为OD机试真题及题解JAVA查看当前专栏更新的所有题目。
说明
本专栏所有文章均为原创欢迎转载请注明文章出处https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信搜索请谨慎鉴别。技术类文章一般都有时效性本人习惯不定期对自己的博文进行修正和更新因此请访问出处以查看本文的最新版本。