n個骰子的點數

2021-06-29 07:15:58 字數 1329 閱讀 5134

把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個骰子的情況,實現如下 使用遞迴的方式實現 也即模擬每乙個骰子...