首页 > 代码库 > 剑指Offer43 n个骰子点数概率
剑指Offer43 n个骰子点数概率
1 /************************************************************************* 2 > File Name: 43_Dics.cpp 3 > Author: Juntaran 4 > Mail: JuntaranMail@gmail.com 5 > Created Time: 2016年09月04日 星期日 16时46分00秒 6 ************************************************************************/ 7 8 #define maxNum 6 // 骰子最多为6 9 10 #include <stdio.h>11 #include <math.h>12 13 void PrintDics(int number)14 {15 if (number < 1)16 return;17 18 int* Probabilities[2];19 Probabilities[0] = new int[maxNum * number + 1];20 Probabilities[1] = new int[maxNum * number + 1];21 22 23 for (int i = 0; i < maxNum*number+1; ++i)24 {25 Probabilities[0][i] = 0;26 Probabilities[1][i] = 0;27 }28 int flag = 0;29 for (int i = 1; i <= maxNum; ++i)30 Probabilities[flag][i] = 1;31 32 33 for (int k = 2; k <= number; ++k)34 {35 for (int i = 0; i < k; ++i)36 Probabilities[1-flag][i] = 0;37 for (int i = k; i <= maxNum*k; ++i)38 {39 Probabilities[1-flag][i] = 0;40 for (int j = 1; j<=i&&j<=maxNum; ++j)41 Probabilities[1-flag][i] += Probabilities[flag][i-j];42 }43 flag = 1 - flag;44 }45 46 double total = pow((double)maxNum, number);47 for (int i = number; i <= maxNum*number; ++i)48 {49 double ratio = (double)Probabilities[flag][i] / total;50 printf("%d: %f\n", i, ratio);51 }52 delete[] Probabilities[0];53 delete[] Probabilities[1];54 }55 56 int main()57 {58 int number = 5;59 PrintDics(number);60 }
剑指Offer43 n个骰子点数概率
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。