前言:書上的解釋太簡單了,在此補充解釋下。
思路:利用動態規劃,不斷地迭代即可。動態規劃的公式為:
dp[i][j] = dp[i-1][j-1] + dp[i-1][j-2] + dp[i-1][j-3] + dp[i-1][j-4] + dp[i-1][j-5] + dp[i-1][j-6]。
例:假設有5個骰子,具體計算如下。
實際上只需要兩行的空間(2個長度為30的陣列)交替運算就可以,這便是書中的演算法。
**實現:
#include
#include
#include
using
namespace std;
void
printprobability
(int number)
int flag =0;
for(
int i =
1; i <=6;
++i)
for(
int k =
2; k <= number;
++k)
} flag =
1- flag;
}//double total = pow((double)6, number);
for(
int i = number; i <=
6* number;
++i)
putchar(10
);delete
pprobabilities[0]
;delete
pprobabilities[1]
;}intmain()
參考: 劍指 面試題60 n個骰子的點數
題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。思路 動態規劃 參考leetcode題解 c class solution int su...
力扣面試題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...