LeetCode 546. 移除盒子(DP)*
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 546. 移除盒子(DP)*
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給出一些不同顏色的盒子,盒子的顏色由數(shù)字表示,即不同的數(shù)字表示不同的顏色。
你將經(jīng)過(guò)若干輪操作去去掉盒子,直到所有的盒子都去掉為止。
每一輪你可以移除具有相同顏色的連續(xù) k 個(gè)盒子(k >= 1),這樣一輪之后你將得到 k*k 個(gè)積分。
當(dāng)你將所有盒子都去掉之后,求你能獲得的最大積分和。
來(lái)源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/remove-boxes
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
- 參考官方的思路
- dp[i][j][k] 表示區(qū)間[i,j]后面有 k 個(gè)連續(xù)元素跟 j 下標(biāo)處相同
- 兩種辦法,1,消除右側(cè)的k+1個(gè)一樣的 dp[i][j][k] = dp[i][j-1][0] + (k+1)*(k+1)
- 2,枚舉左側(cè)的中間點(diǎn) p in [i, j-1],當(dāng)b[p]==b[j]時(shí),消除[p+1,j-1]區(qū)間,dp[i][j][k] = dp[p+1][j-1][0] + dp[i][p][k+1]
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 546. 移除盒子(DP)*的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 759. 员工空闲时间
- 下一篇: LeetCode 1664. 生成平衡数