题目描述
https://leetcode-cn.com/problems/nge-tou-zi-de-dian-shu-lcof/
思路题解
dp
二维动态规划,第三轮遍历“和-上一轮的骰子数”。
- dp递归方程
代表i+1个骰子的和为等于j时候的概率。dp[i][j]
-
dp[i][j]=Sum(dp[i-1][j-k])
,并判断0<=i<=n-1,i+1<=j<=6n,1<=k<=6
时就更新dp.j-k>=0
- 初始条件:
dp[0][1:7]=[1/6]*6
最后返回
dp[n-1][n:]
代码如下:
class Solution:
def dicesProbability(self, n: int) -> List[float]:
dp=[[0.0]*(6*n+1) for _ in range(n)]
dp[0][1:7]=[1/6]*6
for i in range(1,n):
for j in range(i+1,6*n+1):
for k in range(1,7):
if j-k>=0:
dp[i][j]+=dp[i-1][j-k]*1/6
else:break
return dp[n-1][n:]