当前位置: 首页 > news >正文

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

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

难度:middle\color{orange}{middle}middle


题目描述

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。

你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。

示例 1:

输入: 1
输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
复制示例输入

示例 2:

输入: 2
输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]复制示例输入

限制:

1<=n<=111 <= n <= 111<=n<=11


算法

(动态规划)

设输入 n 个骰子的解(即概率列表)为 f(n) ,其中「点数和」 x 的概率为 f(n,x)

假设已知 n−1 个骰子的解 f(n−1) ,此时添加一枚骰子,求 n 个骰子的点数和为 x 的概率 f(n,x) 。

当添加骰子的点数为 1 时,前 n−1 个骰子的点数和应为 x−1 ,方可组成点数和 x ;同理,当此骰子为 2 时,前 n−1 个骰子应为 x−2 ;以此类推,直至此骰子点数为 6 。将这 6 种情况的概率相加,即可得到概率 f(n,x) 。递推公式如下所示:

f(n,x)=∑i=16f(n−1,x−i)∗1/6f(n, x) = \sum_{i=1}^6f(n - 1, x - i) * 1 / 6f(n,x)=i=16f(n1,xi)1/6

复杂度分析

  • 时间复杂度O(n2)O(n^2)O(n2)

  • 空间复杂度 : O(n)O(n)O(n)

C++ 代码

class Solution {
public:vector<double> dicesProbability(int n) {vector<double> res(n * 5 + 1);vector<vector<double>> f(n + 1, vector<double>(n * 6 + 1, 0));for (int i = 1; i <= 6; i ++)f[1][i] = 1.0 / 6;for (int i = 2; i <= n; i ++)for (int j = i; j <= i * 6; j ++)for (int k = 1; k <= 6; k ++){if (j - k >= i - 1)f[i][j] += f[i - 1][j - k]/6;}for (int i = 0; i <= n * 5; i ++)res[i] = f[n][n + i];return res;}
};

http://www.lryc.cn/news/59266.html

相关文章:

  • 阿里巴巴-淘宝搜索排序算法学习
  • 〖Python网络爬虫实战⑮〗- pyquery的使用
  • SQL综合查询下
  • 全连接层FC
  • 图的遍历及连通性
  • DJ3-4 实时调度
  • Oracle之PL/SQL游标练习题(三)
  • docker运行服务端性能监控系统Prometheus和数据分析系统Grafana
  • 【Linux】【应用层】多线程编程
  • GameFramework 框架详解之 如何接入热更框架HybridCLR
  • 全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....
  • HTML2.1列表标签
  • 在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效
  • Ambari-web 架构
  • 对接百思买Best Buy EDI 的注意事项
  • 2023年郑州重点建设项目名单公布,中创“算力数据中心”项目入选!
  • Pytorch 容器 - 1. Module类介绍
  • 百度墨卡托坐标转化笔记
  • 每日学术速递4.12
  • HarmonyOS/OpenHarmony公司级技术开发团队硬件基本配置清单
  • 新一代信息技术赋能,安科瑞搭建智慧水务体系的新思路
  • 37岁测试工程师被裁,120天没找到工作,无奈...
  • Java容器使用注意点
  • 密文题解(图论+字典树)
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)
  • 数据结构与常量(Java)
  • 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点 p269 -- Java Version
  • [工具类] post请求 获取request对象, 获取request的请求体(body)参数
  • Golang 多版本安装小工具G
  • day29—选择题