劍指 面試題60 n個骰子的點數

2021-10-05 04:10:32 字數 1261 閱讀 4591

題目

把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....