求编程题思路

求个编程题(from度小满笔试)思路:
一个商人依次经过城市1,2,3,...,N(1<=i<=N),这些城市都流通着一种商品,各城市对应的流通价格为Ai,请问该商人的最大收益是多少,要求交易次数最少,且任意时刻该商人最多持有一件该商品,到达每个城市后该商人可以选择买入,卖出或什么都不做,另外假设商人初始金钱无穷多。
示例:
N=4
各城市流通价格[7,5,10,15]
则输出最大收益为10,交易次数为2(5元买入,15元卖出)
#度小满##笔试题目#
全部评论
leetcode 122题
点赞 回复 分享
发布于 2019-04-20 11:41
网络流
点赞 回复 分享
发布于 2019-04-20 10:59
不是贪心即可嘛,求出多少个升续段求和即可,大佬勿喷(逃
点赞 回复 分享
发布于 2019-04-20 11:23
有点像k次股票买,应该是用dp
点赞 回复 分享
发布于 2019-04-20 11:26
leetcode122?
点赞 回复 分享
发布于 2019-04-20 11:37
dp或者贪心。我觉得dfs也能过一半
点赞 回复 分享
发布于 2019-04-20 11:40
https://blog.csdn.net/Dr_Unknown/article/details/51939121 股票交易问题~
点赞 回复 分享
发布于 2019-04-20 12:00
找到相邻的波谷和波峰就行了
点赞 回复 分享
发布于 2019-04-20 12:47
dp 买卖股票题
点赞 回复 分享
发布于 2019-04-20 12:50
n=int(input()) num=[int(i) for i in input().split()] profit=0 count=0 deal=0 for i in range(1,n):    ##要根据后面的情况才能确定是否要在前面某时刻买下神秘石     if num[i]>num[i-1]:         profit+=num[i]-num[i-1]         if deal==0:    ##如果说没买神秘石             count+=1   #买下它,交易数加1         deal=1         #拥有了神秘石     if num[i]<num[i-1]: #如果后面降价         count+=deal     #拥有神秘石就卖,没有神秘石就不交易         deal=0 print(profit,count) 同意前面一位同学@技术无产阶级 的观点,其实就是找相邻的波峰波谷。
点赞 回复 分享
发布于 2019-08-19 15:27

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务