題目思路 動態規劃把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。
你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。
參考leetcode題解
c++
class
solution
}int sum =
pow(
6, n)
; vector<
double
> res;
for(
int i=n; i<=
6*n; i++
) res.
push_back
(dp[i]
*1.0
/sum)
;return res;}}
;
python
class
solution
:def
twosum
(self, n:
int)
-> list[
float]:
if n ==0:
return
# 初始化 1 - 6 是 1次,7 - n 是 0 次。
# 編號從1開始,這樣方便寫**。 為了從1開始,我們只需要在陣列前面隨便push乙個元素即可,比如本例的0
cnts =[0
]+[1
]*6+
[0]*
(6* n -6)
# 模擬投擲 n - 1 次
for _ in
range
(n -1)
:# 從後向前更新
for i in
range(6
* n,0,
-1):
cnts[i]
=sum
(cnts[
max(i -6,
0): i]
)return
filter
(lambda a: a !=0,
list
(map
(lambda a: a /
6** n, cnts)
))
力扣面試題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...
面試題60 n個骰子的點數 Python題解
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16667,0.16667,0....