n個骰子的點數之和的次數

2021-08-17 19:11:59 字數 961 閱讀 6058

題目:把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。

解題思路:

第一步,確定問題解的表示式。可將f(n, s) 表示n個骰子點數的和為s的排列情況總數。

第二步,確定狀態轉移方程。n個骰子點數和為s的種類數隻與n-1個骰子的和有關。因為乙個骰子有六個點數,那麼第n個骰子可能出現1到6的點數。所以第n個骰子點數為1的話,f(n,s)=f(n-1,s-1),當第n個骰子點數為2的話,f(n,s)=f(n-1,s-2),…,依次類推。在n-1個骰子的基礎上,再增加乙個骰子出現點數和為s的結果只有這6種情況!那麼有:

f(n,s)=f(n-1,s-1)+f(n-1,s-2)+f(n-1,s-3)+f(n-1,s-4)+f(n-1,s-5)+f(n-1,s-6) ,0< n<=6n

f(n,s)=0, s< n or s>6n

上面就是狀態轉移方程,已知初始階段的解為:

當n=1時, f(1,1)=f(1,2)=f(1,3)=f(1,4)=f(1,5)=f(1,6)=1。

遞迴版本:

#include 

#include

#include

using

namespace

std;

int fun(int n, int count)

int main()

system("pause");

return

0;}

迭代版本:

int getnsumcountnotrecusion(int n, int* count)

}return0;}

//驗證

int main()

delete count;

}}

劍指offer.何海濤.電子工業出版社.

n個骰子點數和及各自出現的概率

N個骰子點數之和的分布

將n個均勻的骰子,扔在地上,求點數之和的分布。因為是分布,自然是求n個篩子之和等於m的概率,p m p m fre n,m sum fre n,m 是指n個骰子扔出m個點數的 總的可能情況,這個就相當於組合數,只是限制了每個骰子的點數在1 6之間。sum是n個骰子扔地上所有可能情況之和。因為每個骰子...

n個骰子的點數

把n個骰子扔在地上,所有骰子朝上的一面的點數之和為s。輸入n,列印出s的所有可能的值和出現的概率。1 基於迴圈求骰子點數 2int g maxvalue 6 骰子的點數個數 3void printprobability int number number 為骰子個數49 int pprobabili...

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...