zoukankan      html  css  js  c++  java
  • 算法笔记_155:算法提高 概率计算(Java)

    目录

    1 问题描述

    2 解决方案

     


    1 问题描述

    问题描述
      生成n个∈[a,b]的随机整数,输出它们的和为x的概率。
    输入格式
      一行输入四个整数依次为n,a,b,x,用空格分隔。
    输出格式
      输出一行包含一个小数位和为x的概率,小数点后保留四位小数
    样例输入
    2 1 3 4
    样例输出
    0.3333
    数据规模和约定
      对于50%的数据,n≤5.
      对于100%的数据,n≤100,b≤100.

     


    2 解决方案

    下面代码在系统中运行评分为90分,第五组数据无法通过,我用同版本的C代码运行(PS:具体参见文末参考资料),却可以通过,具体无法通过的原因,有可能是下面代码原因,如有同学Java版代码能够通过,还望分享一下代码哦~

    具体代码如下:

    import java.util.Scanner;
    
    public class Main {
        public static int n, a, b, x;
        
        public void getResult() {
            double[][] dp = new double[n + 1][x + 1];
            for(int j = a;j <= b;j++)
                dp[1][j] = 1.0 / (b - a + 1);
            for(int i = 2;i <= n;i++) {
                for(int k = a;k <= b;k++) {
                    for(int j = a;j <= x;j++) {
                        if(j - k >= 0)
                            dp[i][j] += dp[i - 1][j - k] / (b - a + 1);
                    }
                }
            }
            System.out.printf("%.4f",dp[n][x]);
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            n = in.nextInt();
            a = in.nextInt();
            b = in.nextInt();
            x = in.nextInt();
            test.getResult();
        }
    }

    参考资料:

       1. 算法提高 概率计算

  • 相关阅读:
    bzoj2004(矩阵快速幂,状压DP)
    bzoj1242(弦图判定)
    uva1659(最大费用循环流)
    bzoj1009
    bzoj2893(费用流)
    bzoj4873(最大权闭合子图)
    bzoj2879(动态加边费用流)
    51nod 1239 欧拉筛模板
    poj2774 sa模版
    洛谷3391文艺平衡树
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/6785156.html
Copyright © 2011-2022 走看看