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