Alice plays the following game, loosely based on the card game "21".
Alice starts with 0 points and draws numbers while she has less than k points. During each draw, she gains an integer number of points randomly from the range [1, maxPts], where maxPts is an integer. Each draw is independent and the outcomes have equal probabilities.
Alice stops drawing numbers when she gets k or more points.
Return the probability that Alice has n or fewer points.
Answers within 10-5 of the actual answer are considered accepted.
Input: n = 10, k = 1, maxPts = 10
Output: 1.00000
Explanation: Alice gets a single card, then stops.
Input: n = 6, k = 1, maxPts = 10
Output: 0.60000
Explanation: Alice gets a single card, then stops. In 6 out of 10 possibilities, she is at or below 6 points.
Input: n = 21, k = 17, maxPts = 10Output: 0.73278
0 <= k <= n <= 1041 <= maxPts <= 104In this initial approach, we simulate every possible game outcome up to the maximum point. The idea is to use recursion to try every possible draw of cards and compute the probability of reaching the target score.
K.N.N and K.To improve efficiency, we switch to a Dynamic Programming technique, utilizing a DP array to store probabilities.
dp[x] as the probability of getting exactly x points.K.K, if the score is within the range [K, N], then it contributes to the total probability outcome.The optimized DP approach reduces space usage by using a sliding window over the DP array, effectively reducing it from O(N) to O(maxPts).
[i-maxPts, i].