AcWing 80 骰子的點數

2021-09-21 13:57:17 字數 843 閱讀 9156

將乙個骰子投擲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]。

此題用動態規劃。建立乙個n+1行、6n+1列的二維dp陣列,dp[i][j]表示用 i 個骰子扔出和為 j 的可能數,由於第 i 個骰子可能扔出1-6的點數,所以dp[i][j] = dp[i-1][j-1] + dp[i-1][j-2] + dp[i-1][j-3] + dp[i-1][j-4] + dp[i-1][j-5] + dp[i-1][j-6]。在進行計算之前,先初始化dp[0][0]等於1,然後依次計算dp陣列的每一行。最後將dp陣列的最後一行的從第n+1列一直到這行結束的子陣列返回。

class solution }}

vectorans(dp[n].begin() + n, dp[n].end());

return ans;

}};

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次,獲得的總點數為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...