.大英雄 Bat 与大魔王 Cat 展开了一系列争霸赛,谁先能赢得 n 场比赛则将成为三界之尊。已知,各场比赛 都是独立的且没有平局,Bat 赢得每场比赛的概率都是 p,即 Cat 赢得每场比赛的概率都是 1p。 目前激战正酣,Bat 获胜了 ni 场,Cat 获胜了 nj 场。 Bat 的好朋友苗苗希望能够获知在此条件下 Bat 最终获得胜利的概率。 请给出计算此概率 P(i, j)的一个动态规划算法。
时间: 2024-03-07 19:52:03 浏览: 74
我们可以通过定义状态,利用动态规划的思想,来计算Bat最终获胜的概率。
我们考虑定义状态dp[i][j]表示当已经进行了n场比赛,Bat获胜了n-i场,Cat获胜了n-j场时,Bat最终获胜的概率。
根据题目所给条件,我们可以列出状态转移方程:
dp[i][j] = p * dp[i+1][j] + (1-p) * dp[i][j+1]
其中,p * dp[i+1][j]表示在当前场次中,Bat获胜,所以获胜场次加1,概率乘以p;(1-p) * dp[i][j+1]表示在当前场次中,Cat获胜,所以获胜场次加1,概率乘以(1-p)。
最终的答案即为dp[0][0],表示Bat获胜了n场比赛。
根据这个状态转移方程,我们可以从最后一场比赛开始,倒序计算出dp数组中的所有值,最终返回dp[0][0]即可。
时间复杂度为O(n^2)。
阅读全文