东莞做网站优化哪家好,企业创建网站的途径,上海市企业服务云,推荐好用的分销平台题目描述#xff1a; 在股市的交易日中#xff0c;假设最多可进行两次买卖(即买和卖的次数均小于等于2)#xff0c;规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列#xff0c;请写一个程序计算一天可以获得的最大收益。请采用实践复杂…题目描述 在股市的交易日中假设最多可进行两次买卖(即买和卖的次数均小于等于2)规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。给定价格序列prices及它的长度n请返回最大收益。保证长度小于等于500。 测试用例 [10,22,5,75,65,80],6 返回结果 87 分析首先要明确的是第 i 天卖出是可以在第 i 天买入的。 思路 用两个数组一个数组preProfit[i],指的是第i1天数组下标从0开始之前当然也包括第i1天的最大收益需要保存的一个数据是第i1天之前的最小价格如果第i1天的价格减去最小价格后的利润是要比不在这天卖出的利润大那么就果断卖出否则这一天就不卖出那么这天之前的最大利润和昨天的最大利润是一样的。这样就使用了昨天的数据这才是正统的动态规划的思想。 另外一个数组postProfit[i]指定是第i天买入的话之后所能获得的最大利润需要保持一个变量记录第i1天之后的最大价格如果最大价格减去这一天的利润比明天之后卖出的最大利润要大的话就卖出否则就等于明天之后卖出的最大利润。最后将两个数组求和计算出总的最大利润 转载于:https://www.cnblogs.com/GumpYan/p/5862373.html