解法一:记忆化搜索
参考官方题解:https://leetcode-cn.com/problems/remove-boxes/solution/yi-chu-he-zi-by-leetcode-solution/
太顶了😱
class Solution {public int removeBoxes(int[] boxes) {final int n = boxes.length;int[][][] dp = new int[n][n][n];return f(dp, boxes, 0, boxes.length - 1, 0);}private int f(int[][][] dp, final int[] boxes, int l, int r, int k) {if (l > r) {return 0;}if (dp[l][r][k] != 0) {return dp[l][r][k];}for (; (r > l) && (boxes[r] == boxes[r - 1]); --r, ++k) ;dp[l][r][k] = f(dp, boxes, l, r - 1, 0) + (k + 1) * (k + 1);for (int i = l; i < r; ++i) {if (boxes[i] == boxes[r]) {dp[l][r][k] = Math.max(dp[l][r][k], f(dp, boxes, l, i, k + 1) + f(dp, boxes, i + 1, r - 1, 0));}}return dp[l][r][k];}}
