-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a3bf171
commit 6e6ba1c
Showing
1 changed file
with
38 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
// 837. New 21 Game | ||
// 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. | ||
// Example 1: | ||
|
||
// Input: n = 10, k = 1, maxPts = 10 | ||
// Output: 1.00000 | ||
// Explanation: Alice gets a single card, then stops. | ||
// Example 2: | ||
|
||
// 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. | ||
|
||
class Solution { | ||
public: | ||
double new21Game(int N, int K, int W) { | ||
|
||
if (K == 0 || N >= K + W) return 1.0; | ||
vector<double> dp(N + 1); | ||
dp[0] = 1.0; | ||
double Wsum = 1.0, res = 0.0; | ||
for (int i = 1; i <= N; ++i) { | ||
dp[i] = Wsum / W; | ||
if (i < K) Wsum += dp[i]; else res += dp[i]; | ||
if (i - W >= 0) Wsum -= dp[i - W]; | ||
} | ||
return res; | ||
|
||
} | ||
}; |