有哪些做微信小游戏的网站,广告设计公司vi设计,企业邮箱格式怎么注册,网页单机游戏给出一些不同颜色的盒子#xff0c;盒子的颜色由数字表示#xff0c;即不同的数字表示不同的颜色。 你将经过若干轮操作去去掉盒子#xff0c;直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子#xff08;k 1#xff09;#xff0c;这样一轮…给出一些不同颜色的盒子盒子的颜色由数字表示即不同的数字表示不同的颜色。 你将经过若干轮操作去去掉盒子直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子k 1这样一轮之后你将得到 k*k 个积分。 当你将所有盒子都去掉之后求你能获得的最大积分和。
示例
输入boxes [1,3,2,2,2,3,4,3,1] 输出23 解释 [1, 3, 2, 2, 2, 3, 4, 3, 1] ---- [1, 3, 3, 4, 3, 1] (339 分) ---- [1, 3, 3, 3, 1] (111 分) ---- [1, 1] (339 分) ---- [] (224 分)
代码
class Solution {public int removeBoxes(int[] boxes) {int[][][] dpnew int[100][100][100];return getRemoveBoxes(boxes,dp,0,boxes.length-1,0);}public int getRemoveBoxes(int[] boxes,int[][][] dp,int l,int r,int k) {if (lr) return 0;if(dp[l][r][k]!0) return dp[l][r][k];while (r1boxes[r]boxes[r-1]){k;r--;}dp[l][r][k](k1)*(k1) getRemoveBoxes(boxes, dp, l, r-1, 0);for(int il;ir;i)if(boxes[i]boxes[r]){dp[l][r][k] Math.max(dp[l][r][k],getRemoveBoxes(boxes, dp, l, i, k1)getRemoveBoxes(boxes, dp, i1, r-1, 0));}return dp[l][r][k];}
}