和买卖股票2高度类似
function maxProfit(prices: number[], fee: number): number {const cache: number[][] = Array(prices.length).fill(0).map(() => [NaN, NaN]);function backtrack(day: number, status: number): number {// base caseif (day >= prices.length) {return 0;}if (!isNaN(cache[day][status])) {return cache[day][status];}if (status === 0) {// 未持有cache[day][status] = Math.max(backtrack(day + 1, status),-prices[day] + backtrack(day + 1, 1));} else {// 持有cache[day][status] = Math.max(backtrack(day + 1, status),prices[day] - fee + backtrack(day + 1, 0));}return cache[day][status];// make progress}return backtrack(0, 0);}
