把n個骰子扔在地上,所有骰子朝上的一面的點數之和為s。輸入n,列印出s的所有可能的值和出現的概率。
1結果截圖:////基於迴圈求骰子點數//
2int g_maxvalue = 6 ;//
骰子的點數個數
3void printprobability(int number)//
number 為骰子個數49
int* pprobabilities[2];//
int指標陣列
1011 pprobabilities[0] = new
int[g_maxvalue * number + 1];//
多分配乙個空間,0號位置不用
12 pprobabilities[1] = new
int[g_maxvalue * number + 1];//
多分配乙個空間,0號位置不用
1314
for (int i = 0 ; i < (g_maxvalue * number + 1) ; i++ )//
陣列初始化為0
1519
20int flag = 0 ;//
標記陣列
21for (int i = 1 ; i <= g_maxvalue ; i++)
2225
26for (int k = 2 ; k <= number ; k++) //
處理剩下的骰子
2732
33for (int i = k ; i <= g_maxvalue * k ; i++) //
依次處理k個骰子的所有可能點數和
3442
}43 flag = 1 - flag ;//
調換陣列
4445}46
47double total = pow((double)g_maxvalue , number) ;//
可能情況的總數
48 cout<
和\t"
<
次數\t
"<
<
49for (int i = number ; i <= g_maxvalue * number ; i++)
5054
55 delete pprobabilities[0
];56 delete pprobabilities[1
];57}58
5960
intmain()
61
n個骰子的點數
題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。方法一 遞迴 思路 設n個骰子某次投擲點數和為s的出現次數是f n,s 那麼,f n,s 等於n 1個骰子投擲的點數和為s 1 s 2 s 3 s 4 s 5 s 6時的次數的總和 f n s f n...
n個骰子的點數
題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。方法一 遞迴 思路 設n個骰子某次投擲點數和為s的出現次數是f n,s 那麼,f n,s 等於n 1個骰子投擲的點數和為s 1 s 2 s 3 s 4 s 5 s 6時的次數的總和 f n s f n...
N個骰子的點數
題目 把n個骰子扔在地上,記所有骰子朝上一面的點數和為s。輸入n,求所有可能出現的s的概率 題目分析 常規的骰子各個面的點數分別為1,2,3,4,5,6。因此比較直觀的一種解法是,每次模擬一次骰子可能出現的各個情況,然後遞迴遍歷剩下n 1個骰子的情況,實現如下 使用遞迴的方式實現 也即模擬每乙個骰子...