问题描述:
商人经营一家店铺,有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
解题思路:
先给出利润公式:利润 = (数量)* (卖出价格 - 买入价格)
最大利润 = (最大数量) * (最高差价),当然卖出价格的时间需要在买入价格时间之后。
可以很容易想到:
在当前时间的价格之后,遍历价格列表,找到差价最高(正数)的。但是如此的话,需要遍历两次。如下:
for j in range(len(p)-1):
for k in range(j+1,len(p)):
max_p = max(max_p,p[k]-p[j])
题目注意:同一件商品可以反复买进和卖出
这意味着,在一个最小买入价以及最高卖出价之间,如果有着其他价格,那么就可以反复买入和卖出。
以1 2 3为例,(3-1)差价为2,;但是(2-1)+ (3-2)= 1。
代码实现:
num = int(input())
day = int(input())
item = list(map(int,input().split()))
ans = 0
for i in range(day):
p = list(map(int,input().split()))
max_p = 0
# for j in range(len(p)-1):
# for k in range(j+1,len(p)):
# max_p = max(max_p,p[k]-p[j])
for j in range(num-1):
if p[j+1] > p[j]:
max_p += (p[j+1]-p[j])
ans += (max_p * item[i])
print(ans)