剑指Offer43 n个骰子点数概率

时间:2024-04-24 14:26:53
 /*************************************************************************
> File Name: 43_Dics.cpp
> Author: Juntaran
> Mail: JuntaranMail@gmail.com
> Created Time: 2016年09月04日 星期日 16时46分00秒
************************************************************************/ #define maxNum 6 // 骰子最多为6 #include <stdio.h>
#include <math.h> void PrintDics(int number)
{
if (number < )
return; int* Probabilities[];
Probabilities[] = new int[maxNum * number + ];
Probabilities[] = new int[maxNum * number + ]; for (int i = ; i < maxNum*number+; ++i)
{
Probabilities[][i] = ;
Probabilities[][i] = ;
}
int flag = ;
for (int i = ; i <= maxNum; ++i)
Probabilities[flag][i] = ; for (int k = ; k <= number; ++k)
{
for (int i = ; i < k; ++i)
Probabilities[-flag][i] = ;
for (int i = k; i <= maxNum*k; ++i)
{
Probabilities[-flag][i] = ;
for (int j = ; j<=i&&j<=maxNum; ++j)
Probabilities[-flag][i] += Probabilities[flag][i-j];
}
flag = - flag;
} double total = pow((double)maxNum, number);
for (int i = number; i <= maxNum*number; ++i)
{
double ratio = (double)Probabilities[flag][i] / total;
printf("%d: %f\n", i, ratio);
}
delete[] Probabilities[];
delete[] Probabilities[];
} int main()
{
int number = ;
PrintDics(number);
}