lintcode骰子求和
2018-03-12 00:32
501 查看
题目:
扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。样例:
给定 n = 1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]答案:
public class Solution { /** * @param n an integer * @return a list of Map.Entry<sum, probability> */ private TreeMap<Integer, Double> helper(TreeMap<Integer, Double> M){ TreeMap<Integer, Double> newM = new TreeMap<>(); double p = 1d/6; for(int i = 1; i <= 6; i++) for(int num : M.keySet()){ int key = num + i; if(newM.containsKey(key)) newM.put(key, newM.get(key) + M.get(num)*p); else newM.put(key, M.get(num)*(1d/6)); } return newM; } 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 TreeMap<Integer, Double> M = new TreeMap<>(); double p = 1d/6; for(int i = 1; i <= 6; i++) M.put(i, p); for(int i = 2; i <= n; i++) M = helper(M); List<Map.Entry<Integer, Double>> ans = new ArrayList<>(); for(Map.Entry<Integer, Double> e : M.entrySet()) ans.add(e); return ans; } }
相关文章推荐
- LintCode Add Binary 二进制求和
- lintcode 167 链表求和
- lintcode-【简单题】链表求和
- LintCode(容易)二进制求和
- lintcode刷题--连续子数组求和
- LintCode 207. 区间求和 II
- lintcode--平面范围求和-不可变矩阵(leetcode--Range Sum Query 2D)
- Lintcode167.链表求和C++
- lintcode-408-二进制求和
- LintCode:链表求和
- lintcode循环数组之连续子数组求和
- LintCode 链表求和 问题解答
- LintCoder python 小白2-骰子求和
- lintcode 容易题:Add Binary 二进制求和
- LintCode之167 链表求和
- LINTCODE——区间求和II
- LintCode:区间求和
- lintcode add-binary 二进制求和
- lintcode add-two-numbers 链表求和
- Lintcode---区间求和 I