题解 | #买卖股票的最好时机(四)# Python+解释

买卖股票的最好时机(四)

https://www.nowcoder.com/practice/ba3c096c19e04afbbbd59250e909ac68

import sys

# 每天都有 2k个状态,即第一次买入, 第一次卖出

# 用 buy 和 sell 来累计之前k次买入卖出的钱

# sell[k] 为第k卖出最大收益, buy[k]为第k次买入最大收益

# sell[k] = max(buy[k-1] + prices[i], sell[k])

# buy[k] = max(sell[k-1]-prices[i], buy[j])

n, k = list(map(int,input().strip().split(' ')))

prices = list(map(int,input().strip().split(' ')))

sell =[0]*k 
buy = [-prices[0]]*k 


for i in range(1,n):
    buy[0] = max(-prices[i], buy[0]) # 第一次买入
    sell[0] = max(sell[0],buy[0]+prices[i])
    for j in range(1,k):
        buy[j] = max(sell[j-1]-prices[i], buy[j]) 
        sell[j] = max(buy[j]+prices[i], sell[j])
print(sell[-1] if sell[-1]>0 else 0)

全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
头像
05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务