from typing import List
# 用动态规划的写法来写题。
# 每一天都是有五种状况产生,
#1 ,今日买入,2,今日卖出 ,3今天冷藏期,4,今日不买入也不卖出(沒有持有股票)5 ,今日不买入也不卖出(持有股票)
class Solution:
def maxProfit(self, prices: List[int]) -> int:
# 当日数低于二时,没法开展进行交易,因而立即回到零
if len(prices) <= 1:return 0
# 界定目录表明状态方程
dp = [[0,0,0,0,0] for _ in range(len(prices)) ]
# 界定初值的情况
# 今日买入的盈利为负数
dp[0][0] = -prices[0]
# 第一天不太可能卖出
dp[0][1] = float("-inf")
# 第一天不太可能处在冷藏期
dp[0][2] = float("-inf")
# 不开展买卖盈利为零
dp[0][3] = 0
# 第一天不太可能持有股票 ,另外不买卖
dp[0][4] = float("-inf")
# 开展解析xml
for index in range(1,len(prices)):
# 今日买入,昨日可能是冷藏期,或是沒有买卖
dp[index][0] = max(dp[index - 1][3],dp[index - 1][2]) - prices[index]
# 今日卖出 ,可能是昨日买入的 ,也可能是昨日早已持有但沒有买卖
dp[index][1] = max(dp[index - 1][0],dp[index - 1][4]) prices[index]
# 今日为冷藏期意味着昨日卖出
dp[index][2] = dp[index - 1][1]
#今日不买卖,昨日可能是冷藏期,或是昨日也不买卖
dp[index][3] = max(dp[index -1][3],dp[index - 1][2])
# 今日不买卖(但持有股票) ,可能是昨日就沒有买卖另外持有股票,也可能是昨日刚买的股票 。
dp[index][4] = max(dp[index - 1][4],dp[index - 1][0])
return max(dp[-1])

A = Solution()
print(A.maxProfit([1,2,3,0,2]))
文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归趣营销www.SEOgUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ卍61910465