码迷,mamicode.com
首页 > 其他好文 > 详细

188. 买卖股票的最佳时机 IV

时间:2020-05-05 19:43:25      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:tor   没有   turn   size   return   amp   时机   应该   price   

 1 // 一次交易由买入和卖出构成,至少需要两天。所以说有效的限制 k 应该不超过 n/2,如果超过,就没有约束作用了,相当于 k = +infinity。
 2 class Solution 
 3 {
 4 public:
 5     int maxProfit(int K, vector<int>& prices) 
 6     {
 7         if(prices.empty()) return 0;
 8         int n = prices.size();
 9         if(K > n/2)
10         {
11             vector<vector<int>> dp(n,vector<int>(2,0));
12             dp[0][0] = 0;
13             dp[0][1] = -prices[0];
14             for(int i = 1;i < n;i ++)
15             {
16                 dp[i][0] = max(dp[i - 1][0],dp[i - 1][1] + prices[i]);
17                 dp[i][1] = max(dp[i - 1][1],dp[i - 1][0] - prices[i]);
18             }
19             return dp[n - 1][0];
20         }
21         vector<vector<vector<int>>> dp(n,vector<vector<int>>(K+1,vector<int>(2,0)));
22 
23         for(int k = 1;k <= K;k ++)
24         {
25             dp[0][k][0] = 0;
26             dp[0][k][1] = -prices[0];
27         }
28 
29         for(int i = 1;i < n;i ++)
30         {
31             for(int k = 1;k <= K;k ++)
32             {
33                 dp[i][k][0] = max(dp[i-1][k][0],dp[i-1][k][1] + prices[i]);
34                 dp[i][k][1] = max(dp[i-1][k][1],dp[i-1][k-1][0] - prices[i]);
35             }
36         }
37 
38         int res = dp[n-1][0][0];
39         for(int k = 1;k <= K;k ++)
40         {
41             res = max(res,dp[n-1][k][0]);
42         }
43         return res;
44     }
45 };

 

188. 买卖股票的最佳时机 IV

标签:tor   没有   turn   size   return   amp   时机   应该   price   

原文地址:https://www.cnblogs.com/yuhong1103/p/12831969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!