題目:把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 - 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)。
#include #include #include #include #include #include using namespace std;
//計算n個骰子某次投擲點數和為s的出現次數
方法二:迴圈《劍指offer》題43
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...
N個骰子的點數
題目 把n個骰子扔在地上,記所有骰子朝上一面的點數和為s。輸入n,求所有可能出現的s的概率 題目分析 常規的骰子各個面的點數分別為1,2,3,4,5,6。因此比較直觀的一種解法是,每次模擬一次骰子可能出現的各個情況,然後遞迴遍歷剩下n 1個骰子的情況,實現如下 使用遞迴的方式實現 也即模擬每乙個骰子...