將乙個骰子投擲n次,獲得的總點數為s,s的可能範圍為n~6n。
擲出某一點數,可能有多種擲法,例如投擲2次,擲出3點,共有[1,2],[2,1]兩種擲法。
請求出投擲n次,擲出n~6n點分別有多少種擲法。
樣例1輸入:n=1
輸出:[1, 1, 1, 1, 1, 1]
解釋:投擲1次,可能出現的點數為1-6,共計6種。每種點數都只有1種擲法。所以輸出[1, 1, 1, 1, 1, 1]。
樣例2輸入:n=2
輸出:[1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]
解釋:投擲2次,可能出現的點數為2-12,共計11種。每種點數可能擲法數目分別為1,2,3,4,5,6,5,4,3,2,1。
所以輸出[1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]。
演算法(一)時間複雜度太高了
演算法(二)class
solution
return res;
}int
dfs(
int n,
int sum)
};
dfs轉變成dp問題,重複的不再列舉。
1.狀態如何表示 f[i][j]前i次總和為j的方案數
2.如何計算
3.邊界條件
本題中令人困惑的有k<=min(j,6)。正常情況下,k是列舉到6,但是有時候骰子的點數和並沒有超過6,最大值為j,所以列舉到min(j,6)class
solution
};
80 骰子的點數
將乙個骰子投擲n次,獲得的總點數為s,s的可能範圍為n 6n。擲出某一點數,可能有多種擲法,例如投擲2次,擲出3點,共有 1,2 2,1 兩種擲法。請求出投擲n次,擲出n 6n點分別有多少種擲法。樣例1 輸入 n 1輸出 1,1,1,1,1,1 解釋 投擲1次,可能出現的點數為1 6,共計6種。每種...
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...