每日leetcode(37)
309
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n=prices.size();
if(n<=1) return 0;
int dp[n][3];
dp[0][0]=0;
dp[0][1]=-prices[0];
dp[0][2]=0;
for(int i=1;i<n;i++)
{
dp[i][0]=max(dp[i-1][0], dp[i-1][2]);
dp[i][1]=max(dp[i-1][1], dp[i-1][0]-prices[i]);
dp[i][2]=dp[i-1][1]+prices[i];
}
return std::max(dp[n-1][0],dp[n-1][2]);
}
};