当前位置: 首页> 教育> 高考 > 注册网站域名的作用_三亚中国检科院生物安全中心门户网站建设_百度网址提交入口_seo排名如何

注册网站域名的作用_三亚中国检科院生物安全中心门户网站建设_百度网址提交入口_seo排名如何

时间:2025/9/18 7:11:29来源:https://blog.csdn.net/Ricky_youngone/article/details/143027113 浏览次数:0次
注册网站域名的作用_三亚中国检科院生物安全中心门户网站建设_百度网址提交入口_seo排名如何

题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode)

代码如下

class Solution {
public:int maxProfit(vector<int>& prices) {//dp[i][0]不操作//dp[i][1]第一次持有股票的最大现金//dp[i][2]第一次不持有股票的最大现金//dp[i][3]第二次持有股票的最大现金//dp[i][4]第二次不持有股票的最大现金if(prices.size() == 0)  return 0;vector<vector<int> > dp(prices.size() + 1, vector<int>(5, 0));dp[0][0] = 0;dp[0][1] -= prices[0];dp[0][2] = 0;dp[0][3] -= prices[0];dp[0][4] = 0;for(int i = 1; i < prices.size(); i++){dp[i][0] = dp[i - 1][0];dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]); dp[i][2] = max(dp[i - 1][2], dp[i - 1][1] + prices[i]);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]);}return dp[prices.size() - 1][4];}
};

这个题目其实我们要把他分成二次的嘛,每一次再细分成持有股票和不持有股票,然后就开始取初始化这个数字,用二位数组来定义这个状态。

递推公式:

dp[i][0] = dp[i - 1][0];

这个就是不持有,那我i - 1天都不持有呗
dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]);

这个就是要去取一个最大值了,那我要是当前持有的话,就要分两种情况,第一种是我之前就已经持有了,dp[i - 1][1], 第二个情况就是我之前就不持有,但我买了,所以就要不持有减去我买了股票的现金数,也就是 d p[i - 1][0] - prices[i]
dp[i][2] = max(dp[i - 1][2], dp[i - 1][1] + prices[i]);

这个也是分两种情况,那我不持有,分两种情况,不持有的话那我之前就可能不持有,所以是dp[i - 1][2], 另一种情况是之前持有,所以我就要卖出去这个股票了,那我就要加上我当时卖出股票的钱。
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]);

以此类推

初始化:

dp[0][0] = 0;

我当前不持有,那我现金肯定是0
dp[0][1] -= prices[0];

这个是我当前持有的,所以要买这个股票,要减去价钱
dp[0][2] = 0;

这个是我当前不持有股票的,也就是我卖出去了,这个时候就要加上prices[i]了,但是你想想,既然要卖,那我肯定是不能赔,那么我的利润一定是大于等于0,所以初始化为0
dp[0][3] -= prices[0];

以此类推
dp[0][4] = 0;

以此类推

遍历顺序:从1开始,因为初始化0了

返回值:为什么是返回dp[price.size() - 1][4]呢,因为你想想,你之前的第一次不持有,也就是第一次赚的利润,拿到第二次用了,也就是一个连贯了,所哟dp[price.size()][4]内部就是两次利润的总和了。

关键字:注册网站域名的作用_三亚中国检科院生物安全中心门户网站建设_百度网址提交入口_seo排名如何

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: