其他分享
首页 > 其他分享> > LeetCode剑指 Offer 60. n个骰子的点数

LeetCode剑指 Offer 60. n个骰子的点数

作者:互联网

LeetCode剑指 Offer 60. n个骰子的点数

dp记录状态数量,数学解法会是更快的解法

class Solution:
    def dicesProbability(self, n: int) -> List[float]:

        m, p, l, tot = 6, [1, 2, 3, 4, 5, 6], n * 6, 1.
        dp = [[0 for i in range(l + 1)] for j in range(n)]

        for i in range(m): dp[0][p[i]] = 1
        for i in range(1, n):
            for j in range(1, l + 1):
                for k in range(m):
                    if j + p[k] <= l: dp[i][j + p[k]] = dp[i][j + p[k]] + dp[i - 1][j]

        for i in range(n): tot *= 6.
        for i in range(n, l + 1): dp[n - 1][i] /= tot

        return dp[n - 1][n:]

标签:骰子,Offer,60,range,LeetCode,dp
来源: https://www.cnblogs.com/solvit/p/16470537.html