商人买卖 【新2023】华为OD机试
题目
商人经营一家店铺,有number
种商品,
由于仓库限制每件商品的最大持有数量是item[index]
每种商品的价格是item-price[item_index][day]
通过对商品的买进和卖出获取利润
请给出商人在days
天内能获取的最大的利润
注:同一件商品可以反复买进和卖出
输入
3 第一行输入商品的数量number
3 第二行输入商品售货天数 days
4 5 6 第三行输入仓库限制每件商品的最大持有数量是item[index]
1 2 3 第一件商品每天的价格
4 3 2 第二件商品每天的价格
1 5 3 第三件商品每天的价格
输出
输出商人在这段时间内的最大利润
例如:32
示例一
输入
3
3
4 5 6
1 2 3
4 3 2
1 5 2
输出
32
说明
示例二
输入
1
1
1
1
输出
0
编码思路
该题的编码思路是通过给定的天数和物品数量,读入每个物品的购买数量和每个物品在每个给定的天数的价格。对于每个物品,找到在购买它的那一天和之前的价格差最大的一天。然后将这个差乘以物品的购买数量,并将所有物品的差之和加起来。这是一种简单的贪心算法,它寻找最便宜的价格买入并在最高价格处卖出,而不考虑其他价格点。重要的是要使用 max() 函数来找到在所有天数中的最大价格差。在内部循环中,要从后往前遍历,因为要找到最大的差。此外,还需要注意 Python 中的列表和数组索引是从零开始的,而不是从一开始的。
核心知识点
Python 中的列表索引是从零开始的。
可以使用 for 循环以及 range() 函数来遍历列表和数组。
可以使用 max() 函数找到列表或数组中的最大值。
使用说明
参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。