动态规划,分5中情况的下标
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len=prices.size();
vector<int>dp(5,0);//5个状态 0表示不操作 1表示第一次持股 2 表示第一次不持股 3表示第二次持股 4表示第二次不持股
dp[1]=-prices[0];//第一次持股,减去成本
dp[3]=-prices[0];//初始化
for(int i=1;i<len;i++)
{
dp[1]=max(dp[1],dp[0]-prices[i]);//第一次持股,要么等于本身要么等于前一天利润-当天入股
dp[2]=max(dp[2],dp[1]+prices[i]);
dp[3]=max(dp[3],dp[2]-prices[i]);
dp[4]=max(dp[4],dp[3]+prices[i]);
}
return dp[4];//最后输出不持股
}
};