演算法筆記_155:演算法提高 機率計算(Java)

來源:互聯網
上載者:User

標籤:image   ++   保留   height   小數   test   解決   detail   16px   

目錄

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. 演算法提高 機率計算

 

演算法筆記_155:演算法提高 機率計算(Java)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.