zoukankan      html  css  js  c++  java
  • 动态规划——Remove Boxes

    很久没写博客了,越来越懒了,这次还是要分享LeetCode上一道动态规划的题目,和之前的Ballon Boom那个题(我记得是这个标题吧。。。)差不多,都是对一个数组的区间进行枚举的题,而且涉及到区间和子区间取值的问题,不过那个题和矩阵链乘法基本是一样的,

    这个题的话相对来说更难一点,因为这个题需要对一个三维的dp数组进行维护,最后一个维度的考虑是比较难的。直接提供代码,思路以后有时间再补:

     1 class Solution {
     2     public int removeBoxes(int[] boxes) {
     3         if(boxes==null)return 0;
     4         int len = boxes.length;
     5         if(len<=1)return len*len;
     6         int[][][]dp = new int[len][len][len];
     7         for(int i = 0;i<len;i++)
     8             for(int j = 0;j<=i;j++)
     9                 dp[i][i][j] = (1+j)*(1+j);
    10         int res = 0;
    11         for(int i = len-2;i>=0;i--) {
    12             for(int j = i+1;j<len;j++) {
    13                 for(int k = 0;k<=i;k++) {
    14                     res = (1+k)*(1+k)+dp[i+1][j][0];
    15                     for(int m = i+1;m<=j;m++)
    16                         if(boxes[i]==boxes[m])res = Math.max(res,dp[i+1][m-1][0]+dp[m][j][k+1]);
    17                     dp[i][j][k] = res;
    18                 }
    19             }
    20         }
    21         return dp[0][len-1][0];
    22     }
    23 }
  • 相关阅读:
    连续子数组的最大和
    最小的K个数
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Xcode5下去除Icon高光
    Unity3D-基本导航(NavMesh)功能实现
  • 原文地址:https://www.cnblogs.com/messi2017/p/10055192.html
Copyright © 2011-2022 走看看