题目链接:714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int maxProfit(int* prices, int pricesSize, int fee)
{
int dp[pricesSize][2]; // 第0列表示当前不持有股票,第1列表示当前持有股票
dp[0][0] = 0; // 当前不持有股票,故收益为0
dp[0][1] = -prices[0]; // 买了第0天的股票,未卖出,收益为负的股票价格
for (int i = 1; i < pricesSize; i++) {
dp[i][0] = MAX(dp[i - 1][0], dp[i - 1][1] + prices[i] - fee);
dp[i][1] = MAX(dp[i - 1][0] - prices[i], dp[i - 1][1]);
}
return dp[pricesSize - 1][0];
}