837. 新 21 点
题目链接:837. 新 21 点
代码如下:
class Solution {
public:
double new21Game(int n, int k, int maxPts) {
if (k == 0) {
return 1.0; // 如果 k 为 0,直接返回 1.0
}
vector<double> dp(k + maxPts);
for (int i = k;i <= n && i < k + maxPts;i++) {
dp[i] = 1.0;
}
dp[k - 1] = 1.0 * min(n - k + 1, maxPts) / maxPts;
for (int i = k - 2;i >= 0;i--) {
dp[i] = dp[i + 1] - (dp[i + maxPts + 1] - dp[i + 1]) / maxPts;
}
return dp[0]; // 返回从 0 开始的概率
}
};