mirror of
				https://gitee.com/coder-xiaomo/leetcode-problemset
				synced 2025-11-04 11:43:12 +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>
 |