面试题 抛骰子8次 和为多少的概率最大

一道笔试题,抛骰子8次,和为多少最大,对于笔试题可以这样考虑,两个骰子和为 7的概率最大,8次的话最大为28.

下面编程给出说明,result[i][j] 代表抛i次时,和为j 的次数。对于第i+1 次可使用前面的结果来计算,如计算 result[i+1][48] 可以 把result[i][48-1], result[i][48-2],result[i][48-3],result[i][48-4],result[i][48-5],result[i][48-6] 的值加起来,这样的话就可以自底向上的推出任意次抛骰子的和的结果。

算法如下:

 

public static void rollDice(int cnt){
		int result[][] = new int[cnt+1][cnt*6+1];
		result[1][1]=1;
		result[1][2]=1;
		result[1][3]=1;
		result[1][4]=1;
		result[1][5]=1;
		result[1][6]=1;
		for(int i=2; i <= cnt;i++){
		  for(int j=i;j<=i*6;j++){
			  for(int k=1;k<=6;k++){
				  if(k<j){
					  result[i][j] +=result[i-1][j-k];
				  }
			  }
		  }	
		}
		for(int i=cnt;i<=cnt*6;i++){
			System.out.println("sum "+i+"\tcnt: "+result[cnt][i]);
		}
		
	}
	
    public static void main(String[] args) {
		rollDice(8);
	}

//result
sum 8	cnt: 1
sum 9	cnt: 8
sum 10	cnt: 36
sum 11	cnt: 120
sum 12	cnt: 330
sum 13	cnt: 792
sum 14	cnt: 1708
sum 15	cnt: 3368
sum 16	cnt: 6147
sum 17	cnt: 10480
sum 18	cnt: 16808
sum 19	cnt: 25488
sum 20	cnt: 36688
sum 21	cnt: 50288
sum 22	cnt: 65808
sum 23	cnt: 82384
sum 24	cnt: 98813
sum 25	cnt: 113688
sum 26	cnt: 125588
sum 27	cnt: 133288
sum 28	cnt: 135954
sum 29	cnt: 133288
sum 30	cnt: 125588
sum 31	cnt: 113688
sum 32	cnt: 98813
sum 33	cnt: 82384
sum 34	cnt: 65808
sum 35	cnt: 50288
sum 36	cnt: 36688
sum 37	cnt: 25488
sum 38	cnt: 16808
sum 39	cnt: 10480
sum 40	cnt: 6147
sum 41	cnt: 3368
sum 42	cnt: 1708
sum 43	cnt: 792
sum 44	cnt: 330
sum 45	cnt: 120
sum 46	cnt: 36
sum 47	cnt: 8
sum 48	cnt: 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值