把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。
s可能出现的值的范围为:n--6*n
1.递归思想
通过递归的思想将n个骰子的点数累加。
要求出n个骰子的点数和,可以先求出前n-1个骰子的点数和,然后加上第n个骰子的点数;
递归结束条件:n=1,此时某个点数和出现的次数+1;
#include#include using namespace std;void pro(int number,int cur,int sum,int *p){ if(cur==1) p[sum-number]++; else { for(int i=1;i<=6;i++) { pro(number,cur-1,sum+i,p); } }}void pro(int number,int *p){ for(int i=1;i<=6;i++) pro(number,number,i,p);}void PrintPro(int n){ if(n<1) return; int maxnum=6*n; int *probability=new int[maxnum-n+1]; for(int i=0;i