Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int dp[5001][7][16];
- vector<int> rmax;
- int mod = 1e9+ 7;
- int n;
- int solve(int i = 0 , int prev = 0, int cnt = 0){
- if(i == n){
- return 1;
- }
- int &ret = dp[i][prev][cnt];
- if(~ret) return ret;
- ret = 0;
- for(int j = 1; j<= 6 ;j++){
- if(j == prev){
- if(cnt + 1 <= rmax[prev-1]){
- ret = (ret + solve(i+1, j, cnt+1))%mod;
- }
- }else{
- ret = (ret + solve(i+1, j, 1))%mod;
- }
- }
- return ret;
- }
- int dieSimulator(int n, vector<int>& rollMax) {
- this->n = n;
- rmax = rollMax;
- memset(dp, -1, sizeof dp);
- return solve();
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement