华为2018实习生笔试编程题 三

题目描述:

有N个骰子,同时投掷出去,向上面的数字之和为A。那么输入为N个骰子,请计算出A,和A出现的概率。概率值,小数点保留5位。

样例输入:

1

样例输出:

[[1,0.166667], [2,0.166667], [3,0.166667], [4,0.166667], [5,0.166667], [6,0.166667]]

基本思想:

动态规划,n个骰子点数和为s的种类数只与n-1个骰子的和有关。因为一个骰子有六个点数,那么第n个骰子可能出现1到6的点数。所以当第n个骰子点数为1的话,f(n,s)=f(n-1,s-1),当第n个骰子点数为2的话,f(n,s)=f(n-1,s-2),…,依次类推。在n-1个骰子的基础上,再增加一个骰子出现点数和为s的结果只有这6种情况!

那么有:
f(n,s)=f(n-1,s-1)+f(n-1,s-2)+f(n-1,s-3)+f(n-1,s-4)+f(n-1,s-5)+f(n-1,s-6) ,0< n<=6n 

f(n,s)=0, s< n or s>6n

代码实现:

import java.util.Scanner;
public class Touzi {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int n;
		Scanner s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值