This commit is contained in:
programmercarl
2022-12-20 15:33:57 +08:00
parent 5fc31873aa
commit 77f1c528b7
15 changed files with 290 additions and 292 deletions

View File

@@ -99,17 +99,15 @@ for (int j = 0; j < 2 * k - 1; j += 2) {
第0天做第一次卖出的操作这个初始值应该是多少呢
首先卖出的操作一定是收获利润整个股票买卖最差情况也就是没有盈利即全程无操作现金为0
此时还没有买入,怎么就卖出呢? 其实大家可以理解当天买入当天卖出所以dp[0][2] = 0;
从递推公式中可以看出每次是取最大值那么既然是收获利润如果比0还小了就没有必要收获这个利润了。
第0天第二次买入操作初始值应该是多少呢应该不少同学疑惑第一次还没买入呢怎么初始化第二次买入呢
所以dp[0][2] = 0;
第二次买入依赖于第一次卖出的状态其实相当于第0天第一次买入了第一次卖出了然后在买入一次第二次买入那么现在手头上没有现金只要买入现金就做相应的减少。
第0天第二次买入操作,初始值应该是多少呢?
所以第二次买入操作,初始化为dp[0][3] = -prices[0];
不用管第几次,现在手头上没有现金,只要买入,现金就做相应的减少。
第二次买入操作初始化为dp[0][3] = -prices[0];
第二次卖出初始化dp[0][4] = 0;
**所以同理可以推出dp[0][j]当j为奇数的时候都初始化为 -prices[0]**