Open youngyangyang04 opened 3 weeks ago
👉 买卖股票的最佳时机
:股票只能买卖一次,问最大收益。
dp[i][0] = Math.max(dp[i - 1][0], 0 - prices[i]);
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
👉 买卖股票的最佳时机 Ⅱ
:股票可以买卖多次,问最大收益。
dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
👉 买卖股票的最佳时机 Ⅲ
:股票最多买卖两次,问最大收益。
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] + prices[i]);
dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);
dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]);
👉 买卖股票的最佳时机 Ⅳ
:股票最多买卖 k 次,问最大收益。
for (int j = 1; j < 2 * k + 1; j += 2) {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1] - prices[i]);
dp[i][j + 1] = Math.max(dp[i - 1][j + 1], dp[i][j] + prices[i]);
}
👉 买卖股票的最佳时机含冷冻期
:股票买卖有冷冻期,问最大收益。
dp[i][0] = Math.max(dp[i - 1][0], Math.max(dp[i - 1][3] - prices[i], dp[i - 1][1] - prices[i]));
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][3]);
dp[i][2] = dp[i - 1][0] + prices[i];
dp[i][3] = dp[i - 1][2];
👉 买卖股票的最佳时机含手续费
:股票买卖有手续费,问最大收益。
dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee);
https://www.programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92-%E8%82%A1%E7%A5%A8%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93%E7%AF%87.html