Dice Roll Simulation LeetCode solution in C++
1class Solution {2public:3int fun(int i, int k, int p, vector<int> &rollMax, vector<vector<vector<int>>> &dp) {4if (i == 0) return 1;5if (dp[i][k][p] != -1) {6return dp[i][k][p];7}8long long int ans = 0;9for (int j = 1; j < 7; j++) {10if (j == k) {11if (p < rollMax[j - 1]) ans = (ans + fun(i - 1, j, p + 1, rollMax, dp)) % 1000000007;12}1314else15ans = (ans + fun(i - 1, j, 1, rollMax, dp)) % 1000000007;16}17return dp[i][k][p] = ans;18}1920int dieSimulator(int n, vector<int> &rollMax) {21vector<vector<vector<int>>> dp(n + 1, vector<vector<int>>(7, vector<int>(16, -1)));22int ans = fun(n, 0, 1, rollMax, dp);23return ans;24}25};