10.5.3 买卖股票问题
用列表prices记录同一支股票若干天的价格,如prices=[9,2,8,4,1,5]表示记录6天的股票价格,用动态规划思想求买卖一次股票的情况下,能获取最大利润的结果。这实质上要求买入当天的股票价格相对小(而不一定最小),卖出当天的股票价格最高,它们的差(利润)最大。
在买入股票当天的前面任何一天股价,都不能作为卖出股票予以考虑。如prices里第5天的股价为1,假设这一天作为买入股价,那么它不能去取第一天的股价作为卖出股价,而只能取第6天的股价作为卖出股价。
在利用动态规划思想求解情况下,需要考虑prices股价的任何组合,记录其最大利润,同步记录在同一阶段情况下最大解的最小买入股价minPrice。如假设第一天买入股价是9,则无法卖出,最大利润记作0,minPrice=9;第二天股价是2,但是无法卖出,最大利润仍旧为0,minPrice=2(作为新的买入股价);第三天股价是8,可以卖出,最大利润为6,minPrice=2(与8相比,仍旧为最小买入价);依次类推,求最后利润最大值。
代码文件:10_5_3_stock.py(https://www.daowen.com)


代码执行结果如下:
