LeetCode 1563. 石子游戏 V(DP)
文章目錄
- 1. 題目
- 2. 解題
- 2.1 區(qū)間DP
1. 題目
幾塊石子 排成一行 ,每塊石子都有一個(gè)關(guān)聯(lián)值,關(guān)聯(lián)值為整數(shù),由數(shù)組 stoneValue 給出。
游戲中的每一輪:
Alice 會(huì)將這行石子分成兩個(gè) 非空行(即,左側(cè)行和右側(cè)行);
Bob 負(fù)責(zé)計(jì)算每一行的值,即此行中所有石子的值的總和。
Bob 會(huì)丟棄值最大的行,Alice 的得分為剩下那行的值(每輪累加)。
如果兩行的值相等,Bob 讓 Alice 決定丟棄哪一行。下一輪從剩下的那一行開(kāi)始。
只 剩下一塊石子 時(shí),游戲結(jié)束。Alice 的分?jǐn)?shù)最初為 0 。
返回 Alice 能夠獲得的最大分?jǐn)?shù) 。
示例 1: 輸入:stoneValue = [6,2,3,4,5,5] 輸出:18 解釋:在第一輪中,Alice 將行劃分為 [6,2,3],[4,5,5] 。 左行的值是 11 ,右行的值是 14 。 Bob 丟棄了右行,Alice 的分?jǐn)?shù)現(xiàn)在是 11 。 在第二輪中,Alice 將行分成 [6],[2,3] 。 這一次 Bob 扔掉了左行,Alice 的分?jǐn)?shù)變成了 16(11 + 5)。 最后一輪 Alice 只能將行分成 [2],[3] 。 Bob 扔掉右行,Alice 的分?jǐn)?shù)現(xiàn)在是 18(16 + 2)。 游戲結(jié)束,因?yàn)檫@行只剩下一塊石頭了。示例 2: 輸入:stoneValue = [7,7,7,7,7,7,7] 輸出:28示例 3: 輸入:stoneValue = [4] 輸出:0提示: 1 <= stoneValue.length <= 500 1 <= stoneValue[i] <= 10^6來(lái)源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/stone-game-v
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
2.1 區(qū)間DP
時(shí)間復(fù)雜度O(n3) ,有點(diǎn)高,需要優(yōu)化
- dp[l][r] 表示區(qū)間內(nèi)可以得到的最高分,區(qū)間從小往大
- 區(qū)間增加了,枚舉中間分隔點(diǎn)
- 不使用 vector,過(guò)了
1708 ms 10.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1563. 石子游戏 V(DP)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 1007. 行相等的最
- 下一篇: LeetCode DD-2020006.