网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1274|回复: 0
打印 上一主题 下一主题

拼多多面试真题-骰子期望

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-7-3 20:36:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述
扔n个骰子,第i个骰子有可能投掷出Xi种等概率的不同的结果,数字从1到Xi。所有骰子的结果的最大值将作为最终结果。求最终结果的期望。
实现思路:
总次数就是x1*x2*……*xn
我们将其排序,假设x1……xn从小到大排列,从最大的开始看起,如果要让最大值=xn ,则让第n个色子的取值为xn,其他色子任取,情况有x1*x2*……xn-1种。然后我们第n个色子不能取xn了,把它减1放回原序列。
依次进行以上步骤,直到序列全部为1.
代码实现:
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;

public class Q4_2020 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] X = new int[num];
        for (int i=0; i<num; i++){
            X[i] = sc.nextInt();
        }
        DecimalFormat decimalFormat=new DecimalFormat(".00");
        String p=decimalFormat.format(qiwang(X));

        System.out.println(p);
    }
    public static double qiwang(int[] x){
        int len = x.length;
        double n=1;
        for (int value : x) {
            n = n*value;
        }
        Arrays.sort(x);
        double qiwang = 0;
        while (x[len-1]!=1){
            double a = 1;;
            for (int i = 0; i<len-1;i++){
                a = a*x[i];
            }
            qiwang += a*x[len-1];
            x[len-1] -=1;
            Arrays.sort(x);
        }
        qiwang +=1;
        return qiwang/n;
    }


}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 11:15 , Processed in 0.031660 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表