2018华为投骰子

2018-05-02  本文已影响10人  土豆有点

有N个骰子,同时投掷出去,向上面的数字之和为 A。

那么输入为N个筛子,请计算出A,和他出现的概率。

概率值,小数点保留5位。

输入描述:

N,骰子数目

输出描述:
[[``1``, 0.16667``], [``2``, 0.16667``], [``3``, 0.16667``], [``4``, 0.16667``], [``5``, 0.16667``], [``6``, 0.16667``]]

输出为二维数组。每一个值,第一个表示数字, 第二个表示概率。
示例1
输入
1
输出
[[1, 0.16667], [2, 0.16667], [3, 0.16667], [4, 0.16667], [5, 0.16667], [6, 0.16667``]]

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            int N=scanner.nextInt();
            int[][] dice=new int[N+1][6*N+1];

            for(int i=1;i<=6;i++)
                dice[1][i]=1;

            for(int i=2;i<=N;i++)
                for(int j=N;j<=6*N;j++)
                    for(int k=1;j-k>0 && k<=6;k++) {
                        dice[i][j] += dice[i-1][j - k];
                    }
            double total=Math.pow(6,N);

            ArrayList<ArrayList<String>> list=new ArrayList<>();
            for(int i=N;i<=6*N;i++){
                ArrayList<String> item=new ArrayList<>();
                item.add(Integer.toString(i));
                item.add(String.format("%.5f",dice[N][i]/total));
                list.add(item);
            }
            System.out.println(list.toString());
        }
        scanner.close();
    }
}

上一篇 下一篇

猜你喜欢

热点阅读