系列文章目录
前言
本人最近再练习算法,所以会发布自己的解题思路,希望大家多指教
一、题目描述
商人经营一家店铺,有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
输出: