一个通用方法团灭 6 道股票问题
dp[i][2][0] = max(dp[i-1][2][0], dp[i-1][2][1] + prices[i])
dp[i][2][1] = max(dp[i-1][2][1], dp[i-1][1][0] - prices[i])
dp[i][1][0] = max(dp[i-1][1][0], dp[i-1][1][1] + prices[i])
dp[i][1][1] = max(dp[i-1][1][1], -prices[i])
int maxProfit(vector<int>& prices) {
int firstBuy=INT_MIN,firstSell=0;
int secondBuy=INT_MIN,secondSell=0;
for(int p:prices){
firstBuy=max(firstBuy,-p);
firstSell=max(firstSell,firstBuy+p);
secondBuy=max(secondBuy,firstSell-p);
secondSell=max(secondSell,secondBuy+p);
}
return secondSell;
}