目录
- 一、题目描述
- 二、算法原理
- 三、代码实现
一、题目描述
二、算法原理
三、代码实现
class Solution {
public:
const int Init=-0x3f3f3f3f;
int maxProfit(vector<int>& prices)
{
int n=prices.size();
vector<vector<int>> f(n,vector<int>(3,Init));
vector<vector<int>> g(n,vector<int>(3,Init));
f[0][0]=-prices[0];
g[0][0]=0;
for(int i=1;i<n;i++)
{
for(int j=0;j<3;j++)
{
f[i][j]=max(f[i-1][j],g[i-1][j]-prices[i]);
g[i][j]=g[i-1][j];
if(j-1>=0) g[i][j]=max(g[i][j],f[i-1][j-1]+prices[i]);
}
}
return max(max(g[n-1][0],g[n-1][1]),g[n-1][2]);
}
};