n个骰子的点数(递归) 代码(C)

本文地址: http://blog.csdn.net/caroline_wendy

题目: 把n个骰子仍在地上, 全部骰子朝上一面的点数之和为s. 输入n, 打印出s的全部可能的值出现的概率.

採用递归的方法, 能够如果仅仅有一个骰子, 然后骰子数递增相加.

代码:

/*
* main.cpp
*
* Created on: 2014.7.12
* Author: spike
*/ #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> using namespace std; const int g_maxValue = 6; void Probability (int original, int current, int sum, int* pProbabilities) {
if (current == 1) {
pProbabilities[sum-original]++;
} else {
for(int i=1; i<=g_maxValue; ++i) {
Probability(original, current-1, i+sum, pProbabilities);
}
}
} void Probability (int number, int* pProbabilities) {
for (int i=1; i<=g_maxValue; ++i)
Probability(number, number, i, pProbabilities);
} void PrintProbability (int number) {
if (number < 1)
return;
int maxSum = number*g_maxValue;
int* pProbabilities = new int[maxSum-number+1];
for (int i=number; i<=maxSum; ++i)
pProbabilities[i-number] = 0;
Probability(number, pProbabilities);
int total = pow((double)g_maxValue, number);
for (int i=number; i<= maxSum; ++i) {
double ratio = (double)pProbabilities[i-number] / total;
printf("%d: %e\n", i, ratio);
}
delete[] pProbabilities;
} int main(void)
{
PrintProbability(2);
return 0;
}

输出:

2: 2.777778e-002
3: 5.555556e-002
4: 8.333333e-002
5: 1.111111e-001
6: 1.388889e-001
7: 1.666667e-001
8: 1.388889e-001
9: 1.111111e-001
10: 8.333333e-002
11: 5.555556e-002
12: 2.777778e-002

编程算法 - n个骰子的点数(递归) 代码(C)的更多相关文章

  1. 算法—— n个骰子的点数

    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个 ...

  2. 编程算法 - 求1+2+...+n(函数指针) 代码(C++)

    求1+2+...+n(函数指针) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 求1+2+...+n, 要求不能使用乘除法\for\whi ...

  3. 编程算法 - 最好牛线(Best Cow Line) 代码(C)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/37909933 最好牛线(Best Cow L ...

  4. 编程算法 - 求1+2+...+n(函数继承) 代码(C++)

    求1+2+...+n(函数继承) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 求1+2+...+n, 要求不能使用乘除法\for\whi ...

  5. 编程算法 - 求1+2+...+n(模板类) 代码(C++)

    求1+2+...+n(模板类) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 求1+2+...+n, 要求不能使用乘除法\for\whil ...

  6. 编程算法 - 连续子数组的最大和 代码(C)

    连续子数组的最大和 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一 ...

  7. 编程算法 - 最小的k个数 红黑树 代码(C++)

    最小的k个数 红黑树 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用红黑树(multiset) ...

  8. 编程算法 - 二叉搜索树(binary search tree) 代码(C)

    二叉搜索树(binary search tree) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 二叉搜索树(binary search tree)能 ...

  9. 【编程题目】n 个骰子的点数

    67.俩个闲玩娱乐(运算).2.n 个骰子的点数.把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 S.输入 n,打印出 S 的所有可能的值出现的概率. 思路:用递归把每个骰子的可能情况变量,记录 ...

随机推荐

  1. group by 和 聚合函数的使用

    有这样一个表数据: 学生姓名,学生手机号,上课日期,上课科目 科目分: 语文.数学.英语.计算机 要求统计一个这样子的结果: 学生姓名,学生手机号,第一次上课日期,迄今一共上了多少节课,上的最多的科目 ...

  2. WPF学习- 新建项目后自定义Main()[Type 'App' already defines a member called 'Main' with the same parameter types]

    问题点: 在App.xaml.cs中自己添加Main方法,编译会出现如下报错: 错误 CS0111 类型“App”已定义了一个名为“Main”的具有相同参数类型的成员  错误 Type 'App' a ...

  3. TCP的链接过程

    ** TCP 三次握手 四次挥手** 客户端 服务器端 交互的模式 ---> 应答模式* 应答模式 ---> 客户端发起请求 服务器端回应请求** 客户端先去发起请求 ---> 查看 ...

  4. 题解 洛谷P1903/BZOJ2120【[国家集训队]数颜色 / 维护队列】

    对于不会树套树.主席树的本蒟蒻,还是老老实实的用莫队做吧.... 其实这题跟普通莫队差不了多远,无非就是有了一个时间,当我们按正常流程排完序后,按照基本的莫队来,做莫队时每次循环对于这一次操作,我们在 ...

  5. 「 HDU P4734 」 F(x)

    # 题目大意 对于一个数 $x$,它的每一位数字分别是 $A_{n}A_{n-1}A_{n-2}\cdots A_{2}A_{1}$,定义其权重 $f(x)=\sum_{i=1}^{n}\left(A ...

  6. Git的入门

    Git的基本介绍: Git:是一个版本控制工具. Github:是非常有名的在线版本管理网站(速度比较慢). Oschina:中国版本的github,(旗下的的码云地址:gitee.com,速度快) ...

  7. 零基础入门学习Python(16)--序列!序列!

    前言 你可能发现了,小甲鱼把这个列表,元组,字符串放在一起讲是有道理的,它们有许多共同点: 都可以通过索引得到每一个元素 默认索引值总是从0开始 可以通过分片的方法得到一个范围内的元素的集合 有很多共 ...

  8. 零基础入门学习Python(9)--了不起的分支和循环3

    前言 本节继续介绍分支和循环 知识点 while循环 Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码.不同的是只要条件为True,while循环就会一直重 ...

  9. js ajax 传送xml dom对象到服务器

    客户端代码 1 <script> var isie = true; var xmlhttp = null; function createXMLHTTP() {//创建XMLXMLHttp ...

  10. 数据结构代码实现之队列的链表实现(C/C++)

    上班闲着无聊,一直想着要开始写博客,但又不知道写什么.最近又回顾了下数据结构的知识,那就从数据结构开始吧. 前言 关于C语言结构体的知识以及队列的特性请读者自行了解,此处不做过多解释,嘻嘻. 同时此篇 ...