LintCode 20. 骰子求和

原创 2018年04月15日 13:06:05

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


public class Solution {
    /**
     * @param n an integer
     * @return a list of Map.Entry<sum, probability>
     */
    public List<Map.Entry<Integer, Double>> dicesSum(int n) {
        // Write your code here
        // Ps. new AbstractMap.SimpleEntry<Integer, Double>(sum, pro)
        // to create the pair
        long[][] dp = new long[n+1][6*n+1];
        dp[1][1] = 1;
        dp[1][2] = 1;
        dp[1][3] = 1;
        dp[1][4] = 1;
        dp[1][5] = 1;
        dp[1][6] = 1;
        for (int i = 2; i <= n; i++) {
            for (int j = i; j <= 6*i; j++) {
                long x1=0, x2=0, x3=0, x4=0, x5=0, x6=0;
                if (j - 1 > 0) {
                    x1 = dp[i-1][j-1];
                }
                if (j - 2 > 0) {
                    x2 = dp[i-1][j-2];
                }
                if (j - 3 > 0) {
                    x3 = dp[i-1][j-3];
                }
                if (j - 4 > 0) {
                    x4 = dp[i-1][j-4];
                }
                if (j - 5 > 0) {
                    x5 = dp[i-1][j-5];
                }
                if (j - 6 > 0) {
                    x6 = dp[i-1][j-6];
                }
                dp[i][j] = x1 + x2 + x3 + x4 + x5 + x6;
            }
        }
        List<Map.Entry<Integer, Double>> list = new ArrayList<>();
        for (int i = n; i <= n*6; i++) {
            AbstractMap.SimpleEntry<Integer, Double> entry = new AbstractMap.SimpleEntry<>(i, dp[n][i]/Math.pow(6, n));
            list.add(entry);
        }
        return list;
    }
}

偷窥Boost Conversion Library(二)

//(接上)三、与值和类型相关的类型转换1、 lexical_cast在程序开发中,往往需要将数字型对象的值转换为字符文本格式,或反之操作。我们在C/C++标准程序库中可以找到这样的函数来进行转换,例...
  • Jinhao
  • Jinhao
  • 2004-04-18 23:57:00
  • 2586

lintcode 骰子求和

/* 今天被问到了一道lintcode上的题目,然而想了好久才想明白,看来在STL处折腾得太久,当初看《挑战》时,粗浅地学的一点点动态规划,已经忘得所剩无几了... 这几天开始上课了,写a...
  • mofushaohua_ln
  • mofushaohua_ln
  • 2017-09-05 22:54:31
  • 646

(lintcode)第20题 骰子求和

要求:扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。 样例 给定 n = 1,返回 [ [1, 0.17], [2, 0.17]...
  • Aphysia
  • Aphysia
  • 2017-09-05 22:15:56
  • 1163

骰子求和 - LintCode

扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。 注意事项 You do not care about the accuracy of t...
  • zhaohengchuan
  • zhaohengchuan
  • 2018-03-19 16:10:08
  • 43

Java实现-骰子求和

扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。  注意事项 You do not care about the accuracy...
  • qq_14927217
  • qq_14927217
  • 2017-07-01 12:50:04
  • 1491

面试题43:n个骰子和出现可能值得概率(java)

package _43_touzi; import java.util.Arrays; /** * n个骰子和出现可能值得概率 * 使用一个长度为n的数组存放n个骰子的取值,递归n次即可 *...
  • Yan456jie
  • Yan456jie
  • 2016-09-01 22:05:35
  • 1365

lintcode--20. 骰子求和

描述 扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。 注意事项 You do not care about the accuracy of...
  • second24
  • second24
  • 2018-02-25 22:51:08
  • 58

算法题——n个骰子的问题

要求:n个骰子抛出后的正面朝上的点数的和在所有情况中出现的概率 分析:刚刚拿到这个题的时候觉得自己一眼能看出有哪些情况,可是当骰子增加的时候却发现很难着手,怎么解决确实很棘手。仔细分析的话很容易找到一...
  • zr1076311296
  • zr1076311296
  • 2016-03-11 21:57:59
  • 567

面试题43:n个骰子的点数

题目:
  • lom9357bye
  • lom9357bye
  • 2015-04-29 17:16:44
  • 623

LintCoder python 小白2-骰子求和

骰子求和
  • xiongxu3381
  • xiongxu3381
  • 2017-07-08 22:42:15
  • 399
收藏助手
不良信息举报
您举报文章:LintCode 20. 骰子求和
举报原因:
原因补充:

(最多只允许输入30个字)