是否计划通过使用Python付费购买和出售股票来找到最大的利润?
假设我们有一个按时间顺序排列的公司股价列表,并且也有一个卖出交易的交易费用。我们必须找到通过多次买卖该股票所能获得的最大利润。我们必须先购买,然后才能出售。
因此,如果输入像价格=[2、10、4、8]费用=3,那么输出将是6,因为我们可以在2买入并在10卖出并产生3的费用,所以利润是5。然后我们在4买入,在8卖出,产生3的费用,因此获利1,总获利6。
为了解决这个问题,我们将遵循以下步骤:
n:=价格大小
定义一个功能recur()。这将需要i:=0和flag:=0
如果我和n相同
返回0
如果标志为假,则
返回recur(i+1,1)-price[i]和recur(i+1,0)的最大值
返回recur(i+1,1)和recur(i+1,0)+价格的最大值[i]-费用
从主方法调用recur()
让我们看下面的实现以更好地理解:
示例
class Solution:
def solve(self, prices, fee):
n = len(prices)
def recur(i=0, flag=0):
if i == n:
return 0
if not flag:
return max(recur(i + 1, 1) - prices[i], recur(i + 1, 0))
return max(recur(i + 1, 1), recur(i + 1, 0) + prices[i] - fee)
return recur()ob = Solution()prices = [2, 10, 4, 8]
fee = 3
print(ob.solve(prices, fee))输入值
[2, 10, 4, 8], 3
输出结果
6
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短