From 6fddb03a38c7a6eb39ff7a0b2eb3df84c5f010de Mon Sep 17 00:00:00 2001 From: qyg <1600314850@qq.com> Date: Fri, 24 Dec 2021 12:11:01 +0800 Subject: [PATCH] =?UTF-8?q?20210304=E5=8A=A8=E8=A7=84=E5=91=A8=E6=9C=AB?= =?UTF-8?q?=E6=80=BB=E7=BB=93=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=91=A8=E5=9B=9B?= =?UTF-8?q?=E5=8A=A8=E8=A7=84=E4=BA=94=E9=83=A8=E6=9B=B2=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?1=E4=B8=ADj=E7=9A=84=E7=8A=B6=E6=80=81=EF=BC=8C=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=AC=94=E8=AF=AF=EF=BC=8C=E4=BC=98=E5=8C=96=E6=8E=92?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\250\346\234\253\346\200\273\347\273\223.md" | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git "a/problems/\345\221\250\346\200\273\347\273\223/20210304\345\212\250\350\247\204\345\221\250\346\234\253\346\200\273\347\273\223.md" "b/problems/\345\221\250\346\200\273\347\273\223/20210304\345\212\250\350\247\204\345\221\250\346\234\253\346\200\273\347\273\223.md" index dad9884dda..c912b92d4a 100644 --- "a/problems/\345\221\250\346\200\273\347\273\223/20210304\345\212\250\350\247\204\345\221\250\346\234\253\346\200\273\347\273\223.md" +++ "b/problems/\345\221\250\346\200\273\347\273\223/20210304\345\212\250\350\247\204\345\221\250\346\234\253\346\200\273\347\273\223.md" @@ -3,11 +3,11 @@ ## 周一 -[动态规划:买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II(动态规划).html)中股票可以买买多了次! +[动态规划:买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II(动态规划).html)中股票可以买卖多次了! 这也是和[121. 买卖股票的最佳时机](https://programmercarl.com/0121.买卖股票的最佳时机.html)的唯一区别(注意只有一只股票,所以再次购买前要出售掉之前的股票) -重点在于递推公式公式的不同。 +重点在于递推公式的不同。 在回顾一下dp数组的含义: @@ -40,6 +40,7 @@ dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]); 1. 确定dp数组以及下标的含义 一天一共就有五个状态, + 0. 没有操作 1. 第一次买入 2. 第一次卖出 @@ -117,7 +118,7 @@ for (int j = 0; j < 2 * k - 1; j += 2) { } ``` -**本题和[动态规划:123.买卖股票的最佳时机III](https://programmercarl.com/0123.买卖股票的最佳时机III.html)最大的区别就是这里要类比j为奇数是买,偶数是卖剩的状态**。 +**本题和[动态规划:123.买卖股票的最佳时机III](https://programmercarl.com/0123.买卖股票的最佳时机III.html)最大的区别就是这里要类比j为奇数是买,偶数是卖的状态**。 3. dp数组如何初始化 @@ -131,7 +132,7 @@ for (int j = 1; j < 2 * k; j += 2) { } ``` -**在初始化的地方同样要类比j为偶数是买、奇数是卖的状态**。 +**在初始化的地方同样要类比j为奇数是买、偶数是卖的状态**。 4. 确定遍历顺序 @@ -162,9 +163,9 @@ for (int j = 1; j < 2 * k; j += 2) { j的状态为: -* 1:持有股票后的最多现金 -* 2:不持有股票(能购买)的最多现金 -* 3:不持有股票(冷冻期)的最多现金 +* 0:持有股票后的最多现金 +* 1:不持有股票(能购买)的最多现金 +* 2:不持有股票(冷冻期)的最多现金 2. 确定递推公式 @@ -179,7 +180,7 @@ dp[i][2] = dp[i - 1][0] + prices[i]; 可以统一都初始为0了。 代码如下: -``` +```CPP vector> dp(n, vector(3, 0)); ```