欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

代码随想录算法训练营第36期DAY52

最编程 2024-06-13 17:39:12
...
  • class Solution {
  • public:
  •     int maxProfit(int k, vector<int>& prices) {
  •         vector<intdp(2 * k + 10);
  •         // 别忘了初始化:
  •         for (int j = 1; j < 2 * k; j += 2) {
  •             dp[j] = -prices[0];
  •         }
  •         //初始化错了,应该是price[0],为什么呢:因为它是在第一天,用的第一天来初始化。
  •         /* 错误:
  •         for (int i = 1; i < 2 * k; i += 2) {
  •             if (i % 2 != 0)
  •                 dp[i] = -1 * prices[i];
  •         }
  •         */
  •         for (int i = 0; i < prices.size(); i++) {
  •             for (int j = 1; j <= 2 * k; j++) {
  •                 if (j % 2 != 0)
  •                     dp[j] = max(dp[j], dp[j - 1] - prices[i]);
  •                 else
  •                     dp[j] = max(dp[j], dp[j - 1] + prices[i]);
  •             }
  •         }
  •         return dp[2 * k];
  •     }
  • };