mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
39 lines
1.6 KiB
HTML
39 lines
1.6 KiB
HTML
<p>有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。</p>
|
||
|
||
<p>不过我们在使用它时有个约束,就是使得投掷骰子时,<strong>连续</strong> 掷出数字 <code>i</code> 的次数不能超过 <code>rollMax[i]</code>(<code>i</code> 从 1 开始编号)。</p>
|
||
|
||
<p>现在,给你一个整数数组 <code>rollMax</code> 和一个整数 <code>n</code>,请你来计算掷 <code>n</code> 次骰子可得到的不同点数序列的数量。</p>
|
||
|
||
<p>假如两个序列中至少存在一个元素不同,就认为这两个序列是不同的。由于答案可能很大,所以请返回 <strong>模 <code>10^9 + 7</code></strong> 之后的结果。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre><strong>输入:</strong>n = 2, rollMax = [1,1,2,2,2,3]
|
||
<strong>输出:</strong>34
|
||
<strong>解释:</strong>我们掷 2 次骰子,如果没有约束的话,共有 6 * 6 = 36 种可能的组合。但是根据 rollMax 数组,数字 1 和 2 最多连续出现一次,所以不会出现序列 (1,1) 和 (2,2)。因此,最终答案是 36-2 = 34。
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<pre><strong>输入:</strong>n = 2, rollMax = [1,1,1,1,1,1]
|
||
<strong>输出:</strong>30
|
||
</pre>
|
||
|
||
<p><strong>示例 3:</strong></p>
|
||
|
||
<pre><strong>输入:</strong>n = 3, rollMax = [1,1,1,2,2,3]
|
||
<strong>输出:</strong>181
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= n <= 5000</code></li>
|
||
<li><code>rollMax.length == 6</code></li>
|
||
<li><code>1 <= rollMax[i] <= 15</code></li>
|
||
</ul>
|