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