- class Solution {
- public:
- int maxProfit(vector<int>& prices) {
- int height = prices.size();
- vector
int>> dp(height, vector<int>(2)); //第一个数是行,第二个数是列 - dp[0][0] = - prices[0];
- dp[0][1] = 0;
- for (int i = 1; i < prices.size(); i++) {
- //dp[i][0] = max(dp[i - 1][0], prices[i] + dp[i - 1][1]); //0为这一天持有股票最大现金
- //dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]); //1这一天不持有股票最大现金
- dp[i][0] = max(dp[i - 1][0], - prices[i]); //今天才买的股票持有现金为-prices[i]
- dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
- }
- return max(dp[height - 1][0], dp[height - 1][1]);
- }
- };