From e85e9e72755af16f2e47eb8f2e8cade5fb96599d Mon Sep 17 00:00:00 2001 From: qyg <1600314850@qq.com> Date: Sat, 25 Dec 2021 10:06:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92-=E8=82=A1?= =?UTF-8?q?=E7=A5=A8=E9=97=AE=E9=A2=98=E6=80=BB=E7=BB=93=E7=AF=87=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B9=B0=E5=8D=96=E8=82=A1=E7=A5=A8=E7=9A=84?= =?UTF-8?q?=E6=9C=80=E4=BD=B3=E6=97=B6=E6=9C=BAIV=E7=9A=84=E5=8A=A8?= =?UTF-8?q?=E8=A7=84=E4=BA=94=E9=83=A8=E6=9B=B2=E6=AD=A5=E9=AA=A42?= =?UTF-8?q?=E9=80=92=E6=8E=A8=E5=85=AC=E5=BC=8F=E9=94=99=E8=AF=AF=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8E=92=E7=89=88=EF=BC=8C=E7=AC=94=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...351\242\230\346\200\273\347\273\223\347\257\207.md" | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git "a/problems/\345\212\250\346\200\201\350\247\204\345\210\222-\350\202\241\347\245\250\351\227\256\351\242\230\346\200\273\347\273\223\347\257\207.md" "b/problems/\345\212\250\346\200\201\350\247\204\345\210\222-\350\202\241\347\245\250\351\227\256\351\242\230\346\200\273\347\273\223\347\257\207.md" index 86b4f23991..e1fb477bdd 100644 --- "a/problems/\345\212\250\346\200\201\350\247\204\345\210\222-\350\202\241\347\245\250\351\227\256\351\242\230\346\200\273\347\273\223\347\257\207.md" +++ "b/problems/\345\212\250\346\200\201\350\247\204\345\210\222-\350\202\241\347\245\250\351\227\256\351\242\230\346\200\273\347\273\223\347\257\207.md" @@ -173,6 +173,7 @@ public: 【动态规划】 一天一共就有五个状态, + 0. 没有操作 1. 第一次买入 2. 第一次卖出 @@ -199,6 +200,7 @@ dp[i][1] = max(dp[i-1][0] - prices[i], dp[i - 1][1]); 同理可推出剩下状态部分: dp[i][3] = max(dp[i - 1][3], dp[i - 1][2] - prices[i]); + dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]); 代码如下: @@ -279,14 +281,14 @@ j的状态表示为: * 操作一:第i天买入股票了,那么dp[i][1] = dp[i - 1][0] - prices[i] * 操作二:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1] -dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][0]); +dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][1]); 同理dp[i][2]也有两个操作: * 操作一:第i天卖出股票了,那么dp[i][2] = dp[i - 1][1] + prices[i] * 操作二:第i天没有操作,沿用前一天卖出股票的状态,即:dp[i][2] = dp[i - 1][2] -dp[i][2] = max(dp[i - 1][i] + prices[i], dp[i][2]) +dp[i][2] = max(dp[i - 1][1] + prices[i], dp[i - 1][2]) 同理可以类比剩下的状态,代码如下: @@ -320,7 +322,7 @@ public: }; ``` -当然有的解法是定义一个三维数组dp[i][j][k],第i天,第j次买卖,k表示买还是卖的状态,从定义上来讲是比较直观。但感觉三维数组操作起来有些麻烦,直接用二维数组来模拟三位数组的情况,代码看起来也清爽一些。 +当然有的解法是定义一个三维数组dp[i][j][k],第i天,第j次买卖,k表示买还是卖的状态,从定义上来讲是比较直观。但感觉三维数组操作起来有些麻烦,直接用二维数组来模拟三维数组的情况,代码看起来也清爽一些。 ## 最佳买卖股票时机含冷冻期 @@ -462,7 +464,7 @@ public: 至此,股票系列正式剧终,全部讲解完毕! -从买买一次到买卖多次,从最多买卖两次到最多买卖k次,从冷冻期再到手续费,最后再来一个股票大总结,可以说对股票系列完美收官了。 +从买卖一次到买卖多次,从最多买卖两次到最多买卖k次,从冷冻期再到手续费,最后再来一个股票大总结,可以说对股票系列完美收官了。 「代码随想录」值得推荐给身边每一位学习算法的朋友同学们,关注后都会发现相见恨晚!