题源:leetcode
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/
比原来的那个最佳买卖股票时机II多了一个情况去进行dp,其他思路一样。
1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) { 4 if(prices.empty()) return 0; 5 6 int n = prices.size(); 7 vector<vector<int>> dp(n,vector<int>(3)); 8 dp[0][0] = -prices[0]; 9 10 for(int i =1;i<n;i++){ 11 dp[i][0] = max(dp[i-1][0],dp[i-1][2]-prices[i]); 12 dp[i][1] = dp[i - 1][0] + prices[i]; 13 dp[i][2] = max(dp[i - 1][1], dp[i - 1][2]); 14 } 15 return max(dp[n - 1][1], dp[n - 1][2]); 16 17 } 18 };