题解 | #买卖股票的最好时机(四)# 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)

全部评论

相关推荐

05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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