1、题目表述

总共有n个骰子,第n个骰子的的范围为1 ~ Xn,Xn表示第n个骰子的最大值,掷骰子时取所有骰子中的最大值作为本次的结果,求掷一次骰子的得到的结果的期望值。

示例:

输入: 2  2  2

输出:1.75

解释:输入的第一个2表示两个骰子,后面两个2表示两个骰子的范围都为1 ~ 2。

2、解题思路

使用动态规划来解:使用一个二维数组 dp 来保存概率值,dp [ i ] [ j ] 表示总共有 i 个骰子时,掷出的结果为 j 的概率值。计算这个二维数组的概率值时,先从第一个骰子开始计算,接着根据第一个骰子的概率值递推地计算总共有2个骰子的概率值,然后递推地计算总共3个,...... , 总共 n 个骰子的概率值。代码实现如下:

#include <iostream>
#include <vector>
#include <algorithm>
#include <stdio.h>using namespace std;int main()
{int n = 2;                 // n表示骰子个数int x[55] = {0, 2, 2};     // x保存每个骰子的最大点数double dp[55][55];         // dp[i][j]表示第总共i个骰子,掷出的结果为j的概率// 初始化动态规划数组for (int i = 0; i <= 50; i++){for (int j = 0; j <= 50; j++){dp[i][j] = 0;}}dp[0][0] = 1;    for (int i = 1; i <= n; i++){   for (int j = 1; j <= x[i]; j++){double tmp = 0;    for (int k = 0; k <= j; k++){tmp += dp[i-1][k];}    dp[i][j] += tmp/x[i];for (int k = j + 1; k <= 50; k++){dp[i][k] += dp[i-1][k]/x[i];}}for (int j = x[i] + 1; j <= 50; j++){dp[i][j] = dp[i-1][j];}}// 计算期望值double ans = 0 ;for (int i = 0; i <= 50; i++){            ans += dp[n][i] * i;}printf("%.2lf\n", ans);return 0;
}

掷多个骰子取最大值为结果,求结果的期望值相关推荐

  1. MySQL组内排序取最大值

    最近业务反馈一个查询异常的问题,需要DBA对查询结果异常给出解释,并帮助他们解决该问题.问题本质是一个组内排序取最大值的问题,根据业务需求,我构建了测试用例 测试用例 --建表 create tabl ...

  2. PyTorch max()函数取最大值

    max() 函数 本人在复现 LeNet5 网络进行 MNIST 数据集的训练,在模型预测阶段,需要用到 max() 函数进行结果的处理.将模型输出的 fc7 层的 10 个结果,变为最后的一个最大概 ...

  3. SQL取最大值编码(自动编码)

    SQL取最大值编码(自动编码) 用途 : 使用SQL语法做出自动编码效果,例如将单号自动+1后,产生该笔单号 Table说明 SQL语法 SELECT 'A'+REPLICATE('0',7-len( ...

  4. mysql 组内排序_mysql组内排序取最大值

    最近业务反馈一个查询异常的问题,需要DBA对查询结果异常给出解释,并帮助他们解决该问题.问题本质是一个组内排序取最大值的问题,根据业务需求,我构建了测试用例 测试用例--建表 create table ...

  5. mysql 分组统计 取最大值_(Mysql)sql分组取最大值问题

    相信有很多开发人员都会碰到分组取最大值的问题,以及分组取前几个值或后几个值问题.今天开发中遇到了类似问题,百度学习了一波,自己写了个简单明了的小demo,有兴趣的同学可以参考一下,如有不对的地方请多多 ...

  6. java 6面骰子_掷6面骰子6000次每个点数出现的概率

    掷6面骰子6000次每个点数出现的概率 import java.util.random; public class statistics { final static int maxsize = 60 ...

  7. java 6面骰子_java计算掷6面骰子6000次每个点数出现的概率代码实例

    掷6面骰子6000次每个点数出现的概率 掷6面骰子6000次每个点数出现的概率 import java.util.Random; public class Statistics { final sta ...

  8. 使用stream流进行集合排序取最大值,根据集合中的bigdemal属性排序(正序反序)并取最大值

    业务: 求折线图的UPH图相关数据,前端动态修改纵轴的峰值,需要后端获取最大值 1)根据集合某个属性(业务以bigdecimal数据为例)进行集合排序,包括升序反序 2)根据集合的某个number数值 ...

  9. 【Excel函数】隔行取数并取最大值

    Excel数据处理 1 隔行取数 1.1 隔行取数后取最大值 1 隔行取数 问题:Excel中每隔10个数取一个值. 方法:OFFSET或INDEX函数. OFFSET(reference;rows; ...

最新文章

  1. 【数组方法大合集】原生js数组array常用工具方法大合集
  2. D - Fliptile POJ - 3279(翻转问题)
  3. python线性加权模型_局部加权之线性回归(1) - Python实现
  4. python个人总结_python个人总结
  5. mysql ---- 多表查询
  6. SQL Server 2012新增的内置函数尝试
  7. 【Day5.3】鸣沙山月牙泉看日落
  8. 为什么客户端最后还要等待2MSL?
  9. 伦敦银现的交易时间特点
  10. ui九宫格切图_【九宫切图】什么是九宫绘图,九宫格绘法
  11. 我的世界天空之城服务器位置,我的世界天空之城建筑地图详解(附存档)
  12. java处理Oracle Clob Blob类型数据
  13. 译《The Part-Time Parliament》——终于读懂了Paxos协议!
  14. 【阿里面试】链表排序总结
  15. 【Tools】WinEdt编译错误 Error Launching Console Application XeLaTeX ...系统找不到指定的文件。
  16. html5 复制到剪贴板 兼容,JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
  17. VirtualService
  18. 10款自媒体人必备的免费工具,快速高效运营
  19. TextPerceptron阅读笔记
  20. 2、并行接口、协议和相关芯片介绍(8080、8060)

热门文章

  1. 约单APP——互联网创业好项目
  2. 图解 mysql 运行原理
  3. Python中的套接字编程
  4. python:实现数组去重算法(附完整源码)
  5. 游戏音乐外包中策划应该怎么做?
  6. C语言 循环结构实现可连续使用的计算器
  7. 【推荐】平安乡村乡镇视频监控云平台社会治安综合管治理系统解决方案合集(共43份,302M)
  8. 路面机械车辆控制器SPC-CFMC-D28N40A资料
  9. 中天网景亮相2021高交会,携5大解决方案构建物联网数字化底座
  10. Vue简单示例——weex跨平台解决方案