Stone Game VII

update Jun 11, 2021

image

Basic Idea:

Stone Game是一个典型的DP系列,但是我一直都没有很好的整理过。

对于这道题来说,先动手的玩家一定赢,而要求的就是以当前玩家的视角,在两个玩家都做出最优选择的情况下能够比对方多出来的分数。我们注意到对于输入数组 [5,3,1,4,2], 选择5或者选择2会分别留给下一个玩家不同的局面,而对面玩家同样需要保证能从下局开始获得尽可能大的优势。所以这里其实有一个递归的做法,即下面的dfs解法。另一种做法是bottom up DP,从只有一个数字开始到两个相邻的数字,然后到三个相邻数字,直到推导出整个数组。

这里有一个比较抽象的地方,类似于一点 min max 算法的思路,就是 最终分数差距 = 本局得分 - 对手从剩下数字中最优选择继续游戏导致的对手能得到的最大差距

DP 解法

image

DFS with Cache 解法

Last updated