AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 商店
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

AcWing 80. 骰子的点数    原题链接    简单

作者: 作者的头像   腾杨天下 ,  2022-01-13 19:43:02 ,  所有人可见 ,  阅读 82


0


思路

先算出每种点数有多少种投法。求完了每一个点数之后再除以总点数即可。
f[i][j]表示投完第i个骰子之后点数为j的投法有几种。我们要从f[0][0]算到f[n][6n]。然后需要的点数是f[n][n]~f[n][6n]这5*n种点数。
三重循环计算即可

class Solution {
public:
    double a[15][70];
    vector<double> dicesProbability(int n) {
        vector<double>ans;
        a[0][0]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=i*6;j++)
            {
                for(int k=1;k<=6;k++)
                {
                    if(j-k>=0)a[i][j]+=a[i-1][j-k];
                }
            }
        }
        double cnt=0;
        for(int i=n;i<=6*n;i++)cnt+=a[n][i];
        for(int i=n;i<=6*n;i++)
        {
            a[n][i]/=cnt;
            ans.push_back(a[n][i]);
        }
        return ans;
    }
};

0 评论

你确定删除吗?
1024
x

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息