其他分享
首页 > 其他分享> > 【动态规划】leetcode309.zuijia买卖股票时机含冷冻期

【动态规划】leetcode309.zuijia买卖股票时机含冷冻期

作者:互联网

题目:
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

思路:
1.状态分类:

状态一:持有股票状态(当天买入股票,或者是之前就买入了股票然后没有操作)

保持卖出股票状态

2.状态转移:

解答:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n=len(prices)
        if n==0:
            return 0
        dp=[[0]*4 for _ in range(n)]
        dp[0][0]=-prices[0]
        for i in range(1,n):
            dp[i][0]=max(dp[i-1][0],max(dp[i-1][1],dp[i-1][3])-prices[i])
            dp[i][1]=max(dp[i-1][1],dp[i-1][3])
            dp[i][2]=dp[i-1][0]+prices[i]
            dp[i][3]=dp[i-1][2]
        return max(dp[n-1])

标签:状态,max,zuijia,leetcode309,股票,prices,冷冻,dp
来源: https://blog.csdn.net/jqq125/article/details/121417221