这题tql...看大佬学编程的一天
具体的暴力思路和动态规划可以参考下面的文章
力扣
这里给一个逆向推导的:
class Solution {
public:
vector<double> dicesProbability(int n) {
vector<double> dp(6, 1.0 / 6.0);
for (int i = 2; i <= n; i++) {
//i个骰子的和的情况有6*i-i+1种
vector<double> tmp(5 * i + 1, 0);
for (int j = 0; j < 5 * i + 1; j++) {
for (int k = 0; k < 6; k++) {
//j-k>=0是保证f()
if (j - k >= 0 && j - k < dp.size()) {
tmp[j] += dp[j - k] / 6.0;
}
}
}
dp = tmp;
}
return dp;
}
};
其实看懂逆向推导的之后,正向的也很简单了:
class Solution {
public:
vector<double> dicesProbability(int n) {
vector<double> dp(6, 1.0 / 6.0);
for (int i = 2; i <= n; i++) {
vector<double> tmp(5 * i + 1, 0);
for (int j = 0; j < dp.size(); j++) {
for (int k = 0; k < 6; k++) {
tmp[j + k] += dp[j] / 6.0;
}
}
dp = tmp;
}
return dp;
}
};
作者:jyd
链接:https://leetcode-cn.com/problems/nge-tou-zi-de-dian-shu-lcof/solution/jian-zhi-offer-60-n-ge-tou-zi-de-dian-sh-z36d/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。