程序以找到我们可以在python中买卖k之后可以赚到的最大利润
假设我们有一个称为nums的数字列表,它们按时间顺序表示公司的股票价格,并且还有另一个值k,我们必须找到最多可以通过k次买卖获得的最大利润(我们必须购买出售之前,以及购买之前出售)。
因此,如果输入就像价格= [7、3、5、2、3] k = 2,那么输出将是3,因为我们可以在3处购买,然后在5处出售,再次在2处购买,然后出售在3。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能
dp()
。这将花费i,k如果我等于价格的大小或k等于0,则
返回0
如果买的是真的,那么
返回(dp(i + 1,k-1,False)+ price [i])和dp(i + 1,k,购买)的最大值
除此以外,
返回(dp(i + 1,k,True)-price [i])和dp(i + 1,k,购买)的最大值
从主方法调用dp(0,k,False)并返回结果
让我们看下面的实现以更好地理解-
例
class Solution:def solve(self, prices, k):
def dp(i, k, bought):
if i == len(prices) or k == 0:
return 0
if bought:
return max(dp(i + 1, k - 1, False) + prices[i], dp(i + 1, k, bought))
else:
return max(dp(i + 1, k, True) - prices[i], dp(i + 1, k, bought))
return dp(0, k, False)
ob = Solution()prices = [7, 3, 5, 2, 3]
k = 2
print(ob.solve(prices, k))
输入值
[7, 3, 5, 2, 3], 2
输出结果
3
以上是 程序以找到我们可以在python中买卖k之后可以赚到的最大利润 的全部内容, 来源链接: utcz.com/z/330817.html