随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目:

class Solution {
public:
    vector<double> dicesProbability(int n) {      
        vector<double> dp(6, 1.0/6.0);      //dp[j]表示和为j时的概率,这里j=6是因为这是第一个骰子,骰子增多j也会改变
        for(int i=2;i<=n;i++){      //从第二个骰子开始计算dp[j]的概率
            vector<double> tmp(5*i+1, 0);      //5*i+1是点数之和的个数:6*i-(i-1)
            for(int j=0;j<dp.size();j++){      //先拿i-1个骰子的点数之和数组的第j个值,它所影响的是i个骰子时的temp[j+k]的值
                for(int k=0;k<6;k++){      //比如只有1个骰子时,dp[1]是代表当骰子点数之和为2时的概率,它会对当有2个骰子时的点数之和为3、4、5、6、7、8产生六种影响
                    tmp[j+k]+=dp[j]/6.0;      //累加上dp数组值与1/6的乘积。j表示加骰子之前,k是新的一个骰子
                }
            }
            dp = tmp;
        }
        return dp;
    }
};

作者:Krahets
链接:https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/solutions/637778/jian-zhi-offer-60-n-ge-tou-zi-de-dian-sh-z36d/
来源:力扣(LeetCode)

posted on   孜孜不倦fly  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示