zoukankan      html  css  js  c++  java
  • 算法—— n个骰子的点数

    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。
    你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。
    leetcode

    解题思路:迭代模拟每个情况下,概率的累加值。
    分成三重循环:

    1. 第一层循环表示骰子的个数;
    2. 第二层循环表示当前骰子个数下,会存在几个情况,以及每种情况的概率;
    3. 第三层循环中计算当前情况的概率值,只需要在合适的区间范围上累加即可。
    class Solution {
        public double[] dicesProbability(int n) {
            double pre[] = {1/6d, 1/6d, 1/6d, 1/6d, 1/6d, 1/6d};
    
            for(int i = 2; i <= n; i++) {
                double[]  cur = new double[i * 5 + 1];
                for(int j = 0; j < pre.length; j++) {
                    for(int x = 0; x < 6; x++) {
                        cur[x + j] += pre[j]/6;
                    }
                }
                pre = cur;
            }
            return pre;
        }
    }
    
  • 相关阅读:
    Java并发之synchronized关键字和Lock接口
    Java并发之volatile关键字
    浏览器的缓存机制
    垃圾回收技术
    import和require区别
    垃圾回收机制
    TCP四次挥手
    进程
    TCP基础概念
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/lippon/p/14117652.html
Copyright © 2011-2022 走看看