60 n 個骰子的點數

2021-10-08 11:40:34 字數 743 閱讀 6192

lintcode

把 n 個骰子扔在地上,求點數和為 s 的概率。

使用乙個二維陣列 dp 儲存點數出現的次數,其中 dp[i][j] 表示前 i 個骰子產生點數 j 的次數。

空間複雜度:o(n2)

public list

>

dicessum

(int n)

空間複雜度:o(n)

public list

>

dicessum

(int n)

final

double totalnum = math.

pow(

6, n)

; list

> ret =

newarraylist

<

>()

;for

(int i = n; i <= pointnum; i++

) ret.

add(

newabstractmap.******entry

<

>

(i, dp[

1- flag]

[i]/ totalnum));

return ret;

}

60 n個骰子的點數

把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。解法一 遞迴。可以先把n個骰子分為兩堆 第一堆只有乙個 另一堆有n 1個。單獨的那個有可能出現1 6的點數。接下來問題轉化成1 6的每一種點數和剩下的n 1個骰子來計算點數和。接下來把n 1個骰子仍然分成兩...

60 n個骰子的點數概率

把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16667,0.16667,0....

劍指 Offer 題解 60 n 個骰子的點數

把n個骰子仍在地上,所有的骰子朝上的一面的點數之和為s,輸入n,列印出s所有可能的值出現的概率。乙個骰子的情況 input n 1output 1,0.17 2,0.17 3,0.17 4,0.17 5,0.17 6,0.17 兩個骰子的情況 input n 2output 2,0.03 3,0.0...