/*
*
* 面试题43:n个骰子的点数
* 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。
* 输入n,打印出s的所有可能的值出现的概率。
*
*/ #include <iostream>
#include <cmath> using namespace std; const int max_val = ; //核心,计算概率
//original为起始值,n个骰子起始值为n
//current为当前骰子个数
//骰子数之和
//和对应的次数
void probalility(int original, int current, int sum, int *probabilities)
{
if (current == ) {
probabilities[sum - original]++;
}
else{
//每个骰子都有六种可能
for (int i = ; i <= max_val; i++) {
probalility(original, current - , i + sum, probabilities);
}
}
}
//计算概率
void probalility(int number, int *probabilities)
{
for (int i = ; i <= max_val; i++) {
probalility(number, number, i, probabilities);
}
} void PrintPrabability(int number)
{
if (number < ) {
return;
}
//申请空间
int max_sum = number * max_val;
int *probabilities = new int[max_sum];
for (int i = number; i <= max_sum; i++) {
probabilities[i] = ;
}
//计算可能的情况
probalility(number, probabilities); //计算概率
int total = pow(double(max_val), number);
for (int i = number; i <= max_sum; i++) {
double ratio = (double)probabilities[i - number] / total;
cout << i << " " << ratio << endl;
}
}

最新文章

  1. 提取ecshop的mysql类
  2. jsp response对象
  3. Python_Day10_进程、线程、协程
  4. atom初体验
  5. BZOJ4002 [JLOI2015]有意义的字符串
  6. 深入学习PHP内核
  7. Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
  8. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)
  9. RPA简介
  10. volatile与synchronized有什么区别?
  11. Linux 查看进程的线程数
  12. WRITING POSTGRESQL TRIGGERS IN GO
  13. unitest 测试集 实例
  14. [译] OpenStack Ocata 版本中的 53 个新功能盘点
  15. delphi 第三方组件 log4cpp.dll
  16. Spring事务&lt;tx:annotation-driven/&gt;的理解
  17. 数据仓库基础(十三)Informatica workflow
  18. MySQL DeadLock故障排查过程
  19. [swift]初始化方法自己主动继承
  20. 使用cnpm代替npm

热门文章

  1. js 设计模式:观察者和发布订阅模式
  2. Go 后端主要做什么
  3. github提交代码
  4. 前端框架vue学习笔记:环境搭建
  5. gitlab的搭建与汉化
  6. 反编译 java
  7. angular9 学习笔记
  8. 小白学 Python 爬虫(28):自动化测试框架 Selenium 从入门到放弃(下)
  9. 探讨 Git 代码托管平台的若干问题
  10. ROS机器人系统学习——踩坑之路