Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. class Solution {
  2. public:
  3. const int mod = 1e9 + 7;
  4.  
  5. int dieSimulator(int n, vector<int>& rollMax) {
  6. int dp[5001][7][16];
  7. // dp[i][j][k] in ith roll in how many ways can I roll num j
  8. // making k consecutive numbers of j
  9.  
  10. for (int num = 1; num <= 6; num++){
  11. dp[0][num][1] = 1;
  12. }
  13.  
  14. for (int roll = 1; roll <= n; roll++){
  15. for (int num = 1; num <= 6; num++){
  16. int one = 0;
  17.  
  18. for (int prev = 1; prev <= 6; prev++){
  19. if (prev == num) continue;
  20. for (int con = 1; con <= rollMax[prev - 1]; con++){
  21. one += dp[roll - 1][prev][con];
  22. one %= mod;
  23. }
  24. }
  25.  
  26. dp[roll][num][1] = one;
  27.  
  28. for (int con = 2; con <= rollMax[num - 1]; con++){
  29. dp[roll][num][con] = dp[roll - 1][num][con - 1];
  30. }
  31. }
  32. }
  33.  
  34. int ans = 0;
  35. for (int i = 1; i <= 6; i++){
  36. for (int con = 1; con <= 15; con++){
  37. ans += dp[n][i][con];
  38. ans %= mod;
  39. }
  40. }
  41. return ans;
  42. }
  43. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement