【发布时间】:2012-12-03 09:47:11
【问题描述】:
假设赌场 (C) 的游戏只涉及一名玩家和一名庄家。该游戏使用 m+n 牌进行,m 标记为获胜牌,'n' 标记为输牌。
游戏规则/信息:
- 玩家知道每个阶段的赢牌数量“m”和输牌数量“n”。
- 玩家以“X”的数量开始玩游戏,直到所有牌都抽完为止。
- 庄家非常聪明,有能力根据玩家在桌上的赌注来抽一张赢牌或输牌。
- 每次抽奖都会减少任一类别的牌张数,即如果抽出中奖牌,则中奖牌数变为“m-1”,反之亦然。
- 玩家也可以下注“0”金额。
-
如果玩家下注“W”金额并抽到一张中奖牌。玩家获得2W作为回报,否则他将失去下注金额
问题:推导出玩家应该遵循的算法或策略以最大化他的利润。
一些例子:
测试用例 - 1:
Lets say m=0, n=1
玩家知道庄家没有机会,只能让他输掉任何赌注,所以他下注“0”金额。因此,他能做的最大值是X。
测试用例 - 2:
m=1, n=0
玩家知道庄家别无选择,只能抽出唯一的牌,即获胜的牌,因此他下注一切,即“X”并取回“2X”。所以,他以 2 倍的金额退出赌场。
测试用例 - 3:
m=1, n=1 :
假设玩家下注“W”金额 - 假设庄家抽中奖牌:所以净额 = X+W 和 m->0 和 n->1 :因此在这种情况下最大金额 X+W - 如果庄家抽到失败的牌:所以剩下的净金额 = X-W 和 m->1 和 n->0 :因此,这种情况下的最大金额为 2(X-W)
玩家将选择“W”来最大化他的利润,这只能在 2(X-W)=X+W => W=X/3 的情况下完成
因此,在这种情况下玩家可以走出的最大数量 = 4X/3
【问题讨论】:
-
对我来说听起来像是动态编程。如果你可以推导出 m=1, n=1,那么做 m=x, n=y 有什么困难,因为它只取决于 m=x-1, n=y 或 m=x, n=y-1 哪一个仅取决于更简单的已知案例。
-
没错,但没那么容易。当您坐下来开始为它编写代码时,问题就来了?您将通过求解方程以数学方式计算该情况,您可以通过编程方式计算该情况,这同样具有挑战性。我可能不是一个非常擅长编码的人,但我发现编码很困难
标签: algorithm strategy-pattern evolutionary-algorithm