劍指 Offer 60 n個骰子的點數

2022-07-19 17:57:10 字數 542 閱讀 6193

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=1時,概率均為1/6

劍指 offer 60. n個骰子的點數

class

solution

//一共能擲出5*n+1個點數和

double res = new

double[5 * n + 1];

int sum =n;

//在迴圈賦值中寫sum++,可以合併成1句

for(int i = 0; i < res.length; i++)

res[i] = dp[n][sum++];

return

res;

}}

劍指 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 i j 表示擲完 i 個骰子之後其點數之和為 j 的總次數,這可以由 投擲完 n 1 枚骰子後,對應點數 j 1,j 2,j 3,j 6 出現的次數之和轉化過來。即 1 class solution 910 for int i 2 i n i 17 18 1920 int total pow...

劍指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 時...