zoukankan      html  css  js  c++  java
  • 剑指offer-Q60 n个骰子的点数

    python版本代码

    g_maxValue = 6 # 单个骰子最大的点数
    
    def PrintProbability(number):
        '''
        :param number: 骰子的个数 
        :return: 打印概率分布,返回表示概率分布的数组
        '''
        if number < 1: # 骰子个数小于1
            return
        maxSum  = number * g_maxValue 
        pProbabilities = [0 for i in range(maxSum - number + 1)]
        Probability(number, pProbabilities)
    
        total = pow(g_maxValue, number)
        for i in range(number , maxSum + 1):
            ratio = pProbabilities[i-number]/total
            print(i, ratio)
        return pProbabilities
    
    def Probability(number, pProbabilities):
        '''
        :param number: 骰子个数 
        :param pProbabilities:概率分布(计算频数)
        :return: None
        '''
        for i in range(1, g_maxValue+1):
            _Probability(number, number, i, pProbabilities)
    
    def _Probability(original, current, sum, pProbabilities):
        '''
        :param original: 等于骰子的个数,表示的意义是最小的点数之和,作为pProbabilities定位索引的一个offset 
        :param current: 还剩下的未考虑的骰子的个数
        :param sum: 考虑过的骰子的点数之和
        :param pProbabilities: 概率分布(计算频数)
        :return: None
        '''
        if current == 1:
            pProbabilities[sum - original]+=1
        else:
            for i in range(1, g_maxValue+1):
                _Probability(original, current - 1, i+sum, pProbabilities)
    
    PrintProbability(1)
    
  • 相关阅读:
    d3.js了解
    java常用验证码
    连接数据库的配置文件
    MD5加密的使用
    ssm下载文件
    Ajax基于rest风格上传图片
    web常见页面错误整理
    前后端一起用cookie来保存密码
    通用mapper插件
    ssm的maven依赖,直接复制可以使用
  • 原文地址:https://www.cnblogs.com/ZeroTensor/p/10831319.html
Copyright © 2011-2022 走看看