解决 21 点游戏变种问题的动态规划解法
题目描述
在本题中,爱丽丝参与了一个大致基于纸牌游戏“21点”规则的游戏。她从0分开始,每次抽取一个随机数(范围为 1 到 maxPts
)并累计分数。每当她的得分达到或超过一个阈值 k
时,游戏结束。问题要求我们计算爱丽丝的得分不超过 n
的概率。
具体规则如下:
- 爱丽丝从得分 0 开始。
- 她每次抽取一个 1 到
maxPts
之间的整数作为分数,并将其加入当前得分。 - 每次抽取的数字是独立且均匀分布的。
- 爱丽丝将在她的得分达到或超过
k
时停止抽取。 - 问题要求计算她的得分不超过
n
的概率。
解题分析
这个问题本质上是一个概率计算问题,需要在动态变化的状态下计算特定得分区间内的概率。由于每次抽取的数字在固定范围内,因此我们可以通过动态规划(DP)来解决这个问题。DP的核心思想是将问题拆解为更小的子问题,每个子问题计算某一状态下的概率,最终合成出完整的解。
动态规划解法
动态规划状态设计
我们首先设计一个数组 dp[i]
来表示爱丽丝得分为 i
时,游戏结束的概率。我们的目标是计算从得分 0 开始时,最终得分不超过 n
的概率。显然,得分大于等于 k
时,游戏就结束了。