zoukankan      html  css  js  c++  java
  • 20. 骰子求和

    20. 骰子求和

    中文English

    扔 n 个骰子,向上面的数字之和为 S。给定 n,请列出所有可能的 S 值及其相应的概率。

    样例

    样例 1:

    输入:n = 1
    输出:[[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]
    解释:掷一次骰子,向上的数字和可能为1,2,3,4,5,6,出现的概率均为 0.17。
    

    样例 2:

    输入:n = 2
    输出:[[2,0.03],[3,0.06],[4,0.08],[5,0.11],[6,0.14],[7,0.17],[8,0.14],[9,0.11],[10,0.08],[11,0.06],[12,0.03]]
    解释:掷两次骰子,向上的数字和可能在[2,12],出现的概率是不同的。
    

    注意事项

    你不需要关心结果的准确性,我们会帮你输出结果。

    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        # @param {int} n an integer
        # @return {tuple[]} a list of tuple(sum, probability)
        '''
        大致思路:
        1.如果n为1,则只会出现1-6,对应的概率为1/6
        2.如果n > 1,则对应出现的数字的概率
        转移方程:
        dp[i][j] = dp[i][j] + dp[i][j - k]#k代表当前投掷骰子的点数,j代表的是投掷点数之和,j - k代表的是上一次投掷那些点数出现的出现的概率
        '''
        def dicesSum(self, n):
            # Write your code here
            #初始条件
            dp = [[0]*(n*6 + 1) for _ in range(n + 1)]
    
            #如果是n = 1的话,则概率为1/6
            for i in range(1, 6 + 1):
                dp[1][i] = 1/6
    
            #如果是n > 1的话,则依次计算每个数出现的概率, dp[i][j] = dp[i][j] + dp[i][j - k]
            #计算顺序
            for i in range(2, n + 1):
                for j in range(i, i*6 + 1):
                    for k in range(1, 7):
                        if (j - k) > 0:
                            dp[i][j] = dp[i][j] + dp[i - 1][j - k]
                            #dp[2][2] dp[2][3] ... dp[2][12]
                            #dp[1][1] 
                    #除以6,表示是平均6份,避免总概率大于1
                    dp[i][j] = dp[i][j]/6
            
            res = [[0]*2 for _ in range(n*6)]
            #依次循环,取出概率和,最后返回
            for z in range(n*6):
                res[z][0] = z + 1
                res[z][1] = dp[n][z + 1] 
    
            return res[n - 1: ]
  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13174182.html
Copyright © 2011-2022 走看看