1
class Solution {
2
public double soupServings(int n) {
3
if (n > 4800) return 1;
4
n = (int) Math.ceil(n * 1.0 / 25);
5
double dp[][] = new double[n + 1][n + 1];
6
return helper(n, n, dp);
7
}
8

9
double helper(int a, int b, double dp[][]) {
10
if (a <= 0 && b <= 0) return 0.5;
11
if (b <= 0) return 0;
12
if (a <= 0) return 1;
13
if (dp[a][b] > 0) return dp[a][b];
14
return dp[a][b] =
15
0.25
16
* (helper(a - 4, b, dp)
17
+ helper(a - 3, b - 1, dp)
18
+ helper(a - 2, b - 2, dp)
19
+ helper(a - 1, b - 3, dp));
20
}
21
}
22
// Upvote please !!

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0