算法筆記_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. 算法提高 概率計算

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM