用dp[i][j]表示擲完 i 個骰子之後其點數之和為 j 的總次數,這可以由
投擲完 n-1 枚骰子後,對應點數 j-1, j-2, j-3, ... , j-6 出現的次數之和轉化過來。
即:
1時間複雜度:o(n2)class
solution 910
for(int i = 2; i <= n; ++i) 17}
18}1920
int total = pow(6
, n);
21 vectorres;
22for(int i = n; i <= 6*n; ++i)
2526
return
res;27}
28 };
空間複雜度:o(n*6*n)
1時間複雜度:o(n2)class
solution 910
for(int i = 2; i <= n; ++i) 17}
18}1920
int total = pow(6
, n);
21 vectorres;
22for(int i = n; i <= 6*n; ++i)
23 res.push_back(dp[i] * 1.0 /total);
2425
return
res;26}
27 };
空間複雜度:o(6*n)
劍指 Offer 60 n個骰子的點數
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16667,0.16667,0....
劍指 Offer 60 n個骰子的點數
dp三步走 1.表示狀態 dp i j 表示擲i個骰子,點數之和為j的概率。2.狀態轉移方程 遞推公式dp i j dp i 1 j 1 dp i 1 j 6 i個骰子和為j的概率 i 1個骰子和為j 1 最後乙個骰子擲出1的概率 i 1個骰子和為j 6 最後乙個骰子擲出6的概率 3.邊界處理 i ...
劍指offer 60 n個骰子得點數取值
思路 動態規劃,總可能出現情況6n 初始狀態 n 1,1,2,3,4,5,6 六種情況 轉移方程 第n次擲色子後的s值,f n,s f n 1,s 1 f n 1,s 2 f n 1,s 3 f n 1,s 4 f n 1,s 5 f n 1,s 6 返回 第n次後,出現各值得情況次數 1 6n 時...