查看: 2200| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

[动态规划] 问一道题 coins in line II

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
dp[i] = values[i] + Math.min(dp[i+2],dp[i+3]);
dp[i] = Math.max(dp[i],values[i]+values[i+1]+ Math.min(dp[i+3],dp[i+4]));
状态转移方程大概是这样 我想问这里为什么要最小化选手1可以取得硬币的值 题目只是问选手1是赢还是输没有必要取最坏情况吧?
这里取max不行吗?让对手都选最少的 取最好的情况 看能不能赢

上一篇:一起刷题! [Python]
下一篇:leetcode原来session记录没有了,求助
🔗
stellari 2016-10-12 08:15:42 | 只看该作者
全局:
题目虽然没有明说, 但是问你"will XXX win"的题, 一般都暗含"双方都采取最优策略"这个假设, 否则这题就没什么意思了. 所以, 之所以状态转移方程要"最小化选手1可以在i以后取得硬币的值", 是因为选手2为了获胜一定会这么做, 因此状态转移方程必须模拟对手的这个策略.
回复

使用道具 举报

🔗
 楼主| 33847682 2016-10-12 09:46:31 | 只看该作者
全局:
stellari 发表于 2016-10-12 08:15
题目虽然没有明说, 但是问你"will XXX win"的题, 一般都暗含"双方都采取最优策略"这个假设, 否则这题就没什 ...

多谢大神 所以这种博弈论的题目都是要考虑自己可以选择的最差选择里面取最优?
回复

使用道具 举报

🔗
stellari 2016-10-12 12:47:47 | 只看该作者
全局:
33847682 发表于 2016-10-12 09:46
多谢大神 所以这种博弈论的题目都是要考虑自己可以选择的最差选择里面取最优?

这是一种可行的思路. 另外你也可以这样考虑: 令dp[ i ]为"到游戏结束为止, 在i处先拿的人比后拿的人能够多拿的面值".  如果i处先拿的人只拿1枚, 那么在i处他比对方多拿values[ i ], 但是在i+1~N处,对手可以比他多拿dp[ i+1 ], 也就是他比对手多拿-dp[ i + 1]. 因此从i到N, 他比对方多拿values[ i ]-dp[ i+1 ];同理, 如果先拿的人拿2枚, 那么能比对方多拿values[ i ] + values [ i + 1] - dp[ i + 2] .取这二者最大值即可得 dp [ i ], 最后看dp [ 0 ] 是大于还是小于 0 即可. 这样的话, 状态转移方程会比你说的那个解法要简单些, 而且也没有"最差选择"这种思维方式.
回复

使用道具 举报

🔗
 楼主| 33847682 2016-10-12 13:12:57 | 只看该作者
全局:
stellari 发表于 2016-10-12 12:47
这是一种可行的思路. 另外你也可以这样考虑: 令dp[ i ]为"到游戏结束为止, 在i处先拿的人比后拿的人能够 ...

明白了 那像这种minmax的题目都可以像你说的这种方法去考虑嘛? 比如Guess Number Higher or Lower II这道题 用minmax是可以做出来的 用你的想法可以做嘛?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表