Coins in a Line II

个人认为这到题不太适合用记忆化搜索。记忆化搜索枚举太多不容易想出来,而且实现比较复杂,容易错。

dp[i]表示还剩i个棋子,当前取的人所获得的最大价值。如果i==3, 先手就有2种情况,取1个或者取2个棋子都是dp[3]。对手就会对应的取dp[1]或者dp[2]价值的棋子。然后dp[3]可以Max(sum[3]-dp[1],sum[3]-dp[2])来获得。sum[i]代表后i个棋子的总和。有了d[2]和dp[3],就可以求得dp[4],一直到dp[n]。

实现的时候必须初始化dp[2],因为dp数组长度是n+1, dp[2]可以通过dp[0]和dp[1]求出来。

评论

此博客中的热门博文

776. Split BST

663. Equal Tree Partition

532. K-diff Pairs in an Array