zoukankan      html  css  js  c++  java
  • leetcode 1223. 掷骰子模拟

    题目:

    有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。

    不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i]i 从 1 开始编号)。

    现在,给你一个整数数组 rollMax 和一个整数 n,请你来计算掷 n 次骰子可得到的不同点数序列的数量。

    假如两个序列中至少存在一个元素不同,就认为这两个序列是不同的。由于答案可能很大,所以请返回 模 10^9 + 7 之后的结果。

    思路:

    动态规划,设置dp[n][i]表示长度为n,且最后结尾的数为i的组合数量。
    dp[n][i]等于所有长度为n且第(n-1,n-2...,n-rollmax[i])位不为i的组合之和。

     1 const int mod=1e9+7;
     2 class Solution {
     3 public:
     4     int dp[5010][10];
     5     int dieSimulator(int n, vector<int>& rollMax) {
     6         for(int i=1;i<=n;i++){
     7             for(int j=1;j<=6;j++){
     8                 for(int p=1;p<=min(i,rollMax[j-1]);p++){
     9                     if(p==i){dp[i][j]=(dp[i][j]+1)%mod; continue;}
    10                     for(int q=1;q<=6;q++){
    11                         if(q==j)continue;
    12                         dp[i][j]=(dp[i][j]+dp[i-p][q])%mod;
    13                     }
    14                 }
    15             }
    16         }
    17         int ans=0;
    18         for(int i=1;i<=6;i++)ans=(ans+dp[n][i])%mod;
    19         return ans;
    20     }
    21 };
    View Code
  • 相关阅读:
    DOM的重点核心
    window的Navigator 对象
    meta标签的http-equiv与content解析
    深拷贝与浅拷贝
    web安全CSRF和XSS
    同源策略与跨域问题
    instanceof与constructor的区别
    javascript原型对象与原型链
    Dom事件
    CSS盒模型的介绍
  • 原文地址:https://www.cnblogs.com/ljy08163268/p/11685688.html
Copyright © 2011-2022 走看看