剑指 Offer 60. n个骰子的点数文章来源:https://www.toymoban.com/news/detail-677327.html
动态规划:已知n-1个骰子的所有情况,再增加一个骰子,可推出n个骰子的所有情况。增加的一个骰子的点数只有1-6种可能,与n-1个骰子对应点数相乘,可得到n个骰子点数的一种情况,遍历所有情况即可。文章来源地址https://www.toymoban.com/news/detail-677327.html
class Solution {
public double[] dicesProbability(int n) {
double[][] dp = new double[n + 1][6 * n + 1];
for(int i = 1; i <= 6; i++){
dp[1][i] = 1.0 / 6;
}
for(int i = 2; i <= n; i++){ // 遍历骰子个数
for(int j = i; j <= 6 * i; j++){ // 骰子个数确定时,遍历所有点数可能的情况
for(int k = 1; k <= 6; k++){ // 新增的一个骰子点数有1-6种可能的情况
if(j - k > 0) dp[i][j] += dp[i - 1][j - k] / 6.0;
}
}
}
double[] res = new double[5 * n + 1];
for(int i = 0; i < res.length; i++) res[i] = dp[n][i + n];
return res;
}
}
到了这里,关于剑指 Offer 60. n个骰子的点数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!