有人从教科书中给我一个问题,我无法弄明白。它是:
假设您有一个股票STOK,您将所有资金投入一个月(天0...30
),并且在月末您不能持有任何股票。你有m
钱。对于任何一天d
,STOK的价格为p(d)
,并且您可以在任何一天买入或卖出股票。但是,对于您在一天内可以买卖多少股票(买卖价格相同)存在限制l(d)
。如果需要,您可以购买非整数单位的库存,以便于计算。鉴于这些功能,您如何安排购买计划以最大化您的利润?
天真的解决方案:在以下限制条件下,每天尽可能多地购买股票:如果您无法在卖出日期前卖出所有股票,请不要再购买;如果你没钱,不要再买了。当你达到必须开始出售股票的地步(这是众所周知的,因为你知道股票价格提前)然后每天尽可能多地卖出。但是,这个解决方案不起作用,因为如果股票在月初下跌然后在前五天后飙升怎么办呢?
这有点像动态编程,但股票价格不是单调的事实使其变得困难。鉴于问题的持续性,蛮力显然已经消失。任何解决方案?
答案 0 :(得分:1)
如果您事先了解股票价格,这听起来很像递归中的问题(蛮力)。您可以构建每日股票价格,每日限额,手头现金和每日股票的数组。 使用递归函数将每个数组作为参数接受。选择一个未标记的可能天数,标记一个买入和一个卖出,更新所有阵列,执行适当的限制并递归,如果月末的现金大于起始现金,将数组设置为新的最大值,将数组重置为起始点,选择下一对天并继续直到所有尝试完成。