【动态规划】扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。

来源:互联网 发布:window的端口共有多少 编辑:程序博客网 时间:2024/05/29 10:24
class Solution {public:    /**     * @param n an integer     * @return a list of pair<sum, probability>     */    vector<pair<int, double>> dicesSum(int n) {        // Write your code here        vector<pair<int, double>> results;        vector<vector<double>> f(n + 1, vector<double>(6 * n + 1));        for (int i = 1; i <= 6; ++i) f[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)                    if (j > k)                        f[i][j] += f[i - 1][j - k];                f[i][j] /= 6.0;            }        for (int i = n; i <= 6 * n; ++i)            results.push_back(make_pair(i, f[n][i]));        return results;    }};
阅读全文
0 0
原创粉丝点击