把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。
你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。
示例 1:
輸入: 1
輸出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
示例 2:
輸入: 2
輸出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]
限制:1 <= n <= 11
class
solution
:def
dicesprobability
(self, n:
int)
-> list[
float]:
dp =[[
0for _ in
range(6
*n+1)]
for _ in
range
(n +1)
]# 給第乙個骰子值進行賦值,每乙個點都出現一次的次數相同,則都為1
for i in
range(1
,7):
# 第乙個骰子1面出現的次數為1,則就把i=1這個位置設定成1
dp[1]
[i]=
1# print(dp)
# 通過動態規劃得到後面骰子出現的次數
for i in
range(2
,n +1)
:for j in
range
(i, i *6+
1):# j 代表n個骰子和可能出現的數字
for k in
range(1
,7):
# k表示第n個骰子一共有幾個表
if j > k:
#表示的前i-1個骰子的j-k的值加上第i個骰子的k值,最終等於j這個值,我們得到當前骰子的值加上前i-1個骰子的和的哪些等於前i個骰子可能出現的和
# print(j, j - k)
dp[i]
[j]+= dp[i -1]
[j - k]
res =
# print(dp)
# n個骰子的最小值為n,最大值為n*6
for i in
range
(n, n*6+
1):[i]
*1.0/6
**n)
return res
劍指 面試題60 n個骰子的點數
題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。思路 動態規劃 參考leetcode題解 c class solution int su...
力扣面試題60 n個骰子的點數
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16667,0.16667,0....
力扣 面試題60 n個骰子的點數
面試題60.n個骰子的點數 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16...