美文网首页
2018华为投骰子

2018华为投骰子

作者: 土豆有点 | 来源:发表于2018-05-02 20:39 被阅读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();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:2018华为投骰子

          本文链接:https://www.haomeiwen.com/subject/lifhrftx.html