2023年1月代码

class Solution {
public:
int removeBoxes(vector& boxes) {
memset(m_dp, 0, sizeof(m_dp));
return Cal(boxes,0, boxes.size() - 1, 0);
}
int Cal(const vector& boxes,int l, int r, int k)
{
if (l > r)
{
return 0;
}
if (0 != m_dp[l][r][k])
{
return m_dp[l][r][k];
}
int iSum = Cal(boxes,l, r - 1, 0) + (k + 1)*(k + 1);
for (int i = l; i < r; i++)
{
if (boxes[i] != boxes[r])
{
continue;
}
iSum = max(iSum, Cal(boxes, l, i, k + 1) + Cal(boxes, i + 1, r - 1, 0));
}
m_dp[l][r][k] = iSum;
return m_dp[l][r][k];
}
int m_dp[100][100][100] ;
};

2023年6月代码

class Solution {
public:
int removeBoxes(vector& boxes) {
m_c = boxes.size();
memset(m_aLRNum, -1, sizeof(m_aLRNum));
return remove(boxes,0, m_c - 1, 0);
}
int remove(const vector& boxes,const int left, const int right, int k)
{
if (right < left)
{
return 0;
}
int& iRet = m_aLRNum[left][right][k];
if (iRet >= 0)
{
return iRet;
}
iRet = (1 + k)*(1 + k) + remove(boxes,left, right - 1, 0);
int tmp = right-1;
//[1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1],可以先消除中间,只保留两个1
while (tmp >= left)
{
while ((tmp >= left) && (boxes[tmp] != boxes[right]))
{
tmp–;
}
if (tmp < left)
{
return iRet;
}
iRet = max(iRet, remove(boxes, tmp + 1, right - 1, 0) + remove(boxes, left, tmp, k + 1));
tmp–;
}
return iRet;
}
int m_c;
int m_aLRNum[100][100][100];//m_aLRNum[l][r][k] 消除nums的[l.r]及和nums[r]相等的k个数
};

2023年8月代码

class Solution {
public:
int removeBoxes(vector& boxes) {
m_boxes = boxes;
//dp[l][r][k]表示 boxes[l] 到boxes[r] 是最后消除的,消除时后面有k同颜色的数
memset(m_dp, 0, sizeof(m_dp));
return Cal(0, boxes.size() - 1, 0);
}
int Cal(int left, int r, int k)
{
if (r < left)
{
return 0;
}
int& iRet = m_dp[left][r][k];
if (0 != iRet)
{
return iRet;
}
iRet = Cal(left, r - 1, 0) + (k + 1) * (k + 1);//直接消除
for (int i = r - 1; i >= left; i–)
{
if (m_boxes[i] != m_boxes[r])
{
continue;
}
iRet = max(iRet, Cal(left, i, k + 1) + Cal(i + 1, r - 1, 0));
}
return iRet;
}
int m_dp[100][100][100];
vector m_boxes;
};

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快

速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关

下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

class="table-box">
我想对大家说的话
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 **C+

+17**
如无特殊说明,本算法用**C++**实现。

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/he_zhidan/article/details/135543157","extend1":"pc","ab":"new"}">> id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type5" id="blog_extension"> class="extension_official" data-report-click="{"spm":"1001.2101.3001.6471"}" data-report-view="{"spm":"1001.2101.3001.6471"}"> class="blog_extension_card_left"> class="blog_extension_card_cont"> 群中有博文配套源码 class="blog_extension_card_cont_r"> QQ群名片
注:本文转载自blog.csdn.net的Ocean@上源码的文章"https://blog.csdn.net/qq_34253002/article/details/134422314"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!