系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、java代码
- 五、测试用例
前言
本人最近再练习算法,所以会发布自己的解题思路,希望大家多指教
一、题目描述
商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index],每种商品的价格在每天是item_price[item_index][day],通过对商品的买进和卖出获取利润,请给出商人在days天内能获取到的最大利润。
注:同一件商品可以反复买进和卖出;
二、输入描述
3 //输入商品的数量 number
3 // 输入商人售货天数 days
4 5 6 //输入仓库限制每件商品的最大持有数量是itemlindex]
1 2 3 // 输入第一件商品每天的价格
4 3 2 // 输入第二件商品每天的价格
1 5 3 // 输入第三件商品每天的价格
三、输出描述
32//输出商人在这段时间内的最大利润
四、java代码
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//获取商品数量int number = Integer.parseInt(scanner.nextLine());//获取售货天数int days = Integer.parseInt(scanner.nextLine());//获取最大持有量int[] haveNums = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();//获取每件商品每天的价格int[][] prices = new int[number][days];for (int i = 0; i < number; i++) {for (int j = 0; j < days; j++) {prices[i][j] = scanner.nextInt();}}//初始化最大利润 根据题意,商品可以反复买进和卖出,第一天进货,买进和卖出利益都是持平的,如果第一天买入的商品,在第二天价格较高时卖出,则有利润可赚int maxPrice = 0;for (int i = 0; i < number; i++) {for (int j = 0; j < days -1; j++) {if(prices[i][j] < prices[i][j+1]){//利润 = (售出价 - 成本价) * 商品数量maxPrice += (prices[i][j+1] - prices[i][j]) * haveNums[i];}}}System.out.println(maxPrice);}
五、测试用例
输入:
3
3
4 5 6
1 2 3
4 3 2
1 5 3
输出: