面試題60 n個骰子的點數(補充解釋)

2021-10-11 13:08:24 字數 978 閱讀 6102

前言:書上的解釋太簡單了,在此補充解釋下。

思路:利用動態規劃,不斷地迭代即可。動態規劃的公式為:

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