给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。
你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 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] (33=9 分)
----> [1, 3, 3, 3, 1] (1
1=1 分)
----> [1, 1] (33=9 分)
----> [] (2
2=4 分)

代码

class Solution {public int removeBoxes(int[] boxes) {int[][][] dp=new 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 (l>r) return 0;if(dp[l][r][k]!=0) return dp[l][r][k];while (r>1&&boxes[r]==boxes[r-1]){k++;r--;}dp[l][r][k]=(k+1)*(k+1)+  getRemoveBoxes(boxes, dp, l, r-1, 0);for(int i=l;i<r;i++)if(boxes[i]==boxes[r]){dp[l][r][k]= Math.max(dp[l][r][k],getRemoveBoxes(boxes, dp, l, i, k+1)+getRemoveBoxes(boxes, dp, i+1, r-1, 0));}return dp[l][r][k];}
}

leetcode546. 移除盒子(dp)相关推荐

  1. LeetCode 546. 移除盒子 (很难的一道DP)

    546. 移除盒子 不解释官方的了... 必须要知道的是,仅仅用[l,r][l,r][l,r]是不够记录状态的,子区间[l,r][l,r][l,r]不仅仅依赖于它的子区间,还依赖之前移动的顺序! 官方 ...

  2. ​LeetCode刷题实战546:移除盒子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. LeetCode 546. 移除盒子 | Python

    546. 移除盒子 题目 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止.每一轮你可以移除具有相同颜色的连续 k 个 ...

  4. leetcode 546. 移除盒子 —— 动态规划

    将上面记忆化存储的递归算法,改为递推算法.即动态规划法. 546. 移除盒子 题目: 546. 移除盒子 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作 ...

  5. LeetCode第 546 题:移除盒子(C++) (弃)

    546. 移除盒子 - 力扣(LeetCode) 典型的动态规划最大值问题,单次移除的盒子个数(k)越多,得到的积分 k*k 就会越大,所以每次操作肯定会把连续的相同颜色的盒子都去掉. 注意: 这题还 ...

  6. Java实现 LeetCode 546 移除盒子(递归,vivo秋招)

    546. 移除盒子 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止.每一轮你可以移除具有相同颜色的连续 k 个盒子( ...

  7. LeetCode 546. 移除盒子(DP)*

    文章目录 1. 题目 2. 解题 1. 题目 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止. 每一轮你可以移除具有 ...

  8. 546. Remove Boxes 移除盒子

    给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止.每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1) ...

  9. LeetCode#546. 移除盒子 (Python解法+详细分析)

    问题描述: 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止.每一轮你可以移除具有相同颜色的连续 k 个盒子(k &g ...

最新文章

  1. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...
  2. HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别
  3. 75道常见AI面试题,看看你的知识盲点在哪?(附解析)
  4. android 一周日历,(Android)获取一周的第一天
  5. Ruby --- gem(RubyGems)安装与使用
  6. MyBatis-Plus 快速开始及详测 SpringBoot 集成Mybatis-Plus
  7. 数值计算动态语言Julia 1.0发布
  8. [ SAP ASAP ] SAP ASAP 方法论 对SAP项目文档的考核标准、 Documentation Principle
  9. Codeforces 741 D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  10. 每日英文2013.06.19
  11. 排序(2):直接插入排序
  12. SourceInsight下面一直出现unable to write to temp file for saving operation 这样的提示
  13. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  14. leetcode 39. Combination Sum(回溯算法)
  15. mac 终端 常用命令
  16. 一文小入门pyQt5 —— 从零到一完成一个Excel文件处理程序
  17. c语言if常见的错误,C语言if语句的一些小错误
  18. 哈佛结构/冯诺依曼结构详细分析
  19. html 数字变成图片,从100到1000数字表图片
  20. GDPR条例的12项重点分析

热门文章

  1. 用strace工具跟踪系统调用
  2. 【操作系统】信号量解决经典同步问题
  3. 【数据结构】对快速排序原理的理解(图解,通俗易懂)
  4. numpy 和tensorflow 中的乘法
  5. html单行元素居中显示,多行元素居左显示
  6. spring 注解方式配置Bean
  7. SpringMVC视图解析器
  8. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
  9. block传值 链接
  10. fastq-dump 报错 解决方案