Dice Roll Simulation LeetCode solution in C++

1
class Solution {
2
public:
3
int fun(int i, int k, int p, vector<int> &rollMax, vector<vector<vector<int>>> &dp) {
4
if (i == 0) return 1;
5
if (dp[i][k][p] != -1) {
6
return dp[i][k][p];
7
}
8
long long int ans = 0;
9
for (int j = 1; j < 7; j++) {
10
if (j == k) {
11
if (p < rollMax[j - 1]) ans = (ans + fun(i - 1, j, p + 1, rollMax, dp)) % 1000000007;
12
}
13

14
else
15
ans = (ans + fun(i - 1, j, 1, rollMax, dp)) % 1000000007;
16
}
17
return dp[i][k][p] = ans;
18
}
19

20
int dieSimulator(int n, vector<int> &rollMax) {
21
vector<vector<vector<int>>> dp(n + 1, vector<vector<int>>(7, vector<int>(16, -1)));
22
int ans = fun(n, 0, 1, rollMax, dp);
23
return ans;
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0