/* * @Author: LetMeFly * @Date: 2025-08-17 19:33:11 * @LastEditors: LetMeFly.xyz * @LastEditTime: 2025-08-17 19:38:09 */ classSolution { public: doublenew21Game(int n, int k, int maxPts){ vector<double> dp(k + maxPts); double s = 0; for (int i = k; i < k + maxPts; i++) { dp[i] = i <= n; s += dp[i]; } for (int i = k - 1; i >= 0; i--) { dp[i] = s / maxPts; s = s - dp[i + maxPts] + dp[i]; } return dp[0]; } };
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
''' Author: LetMeFly Date: 2025-08-17 19:33:11 LastEditors: LetMeFly.xyz LastEditTime: 2025-08-17 19:40:07 ''' classSolution: defnew21Game(self, n: int, k: int, maxPts: int) -> float: dp = [0.] * (k + maxPts) s = 0. for i inrange(k, k + maxPts): dp[i] = 1.if i <= n else0. s += dp[i] for i inrange(k - 1, -1, -1): dp[i] = s / maxPts s = s + dp[i] - dp[i + maxPts] return dp[0]
funcnew21Game(n int, k int, maxPts int)float64 { dp := make([]float64, k + maxPts) s := 0. for i := k; i < k + maxPts; i++ { if i <= n { dp[i] = 1. } else { dp[i] = 0. } s += dp[i] // 别忘了 } for i := k - 1; i >= 0; i-- { dp[i] = s / float64(maxPts) s = s + dp[i] - dp[i + maxPts] } return dp[0] }