算法题,网上给出的解释感觉有点抽象。不知道有哪位能够帮忙详解一下,不甚感谢!附上搜索到解答:http://www.7zhang.com/index/c...http://www.cnblogs.com/bozhou...
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
$result=getResult(2);var_dump($result);/***[getResultdescription]*@param[type]$n[骰子个数]*@return[array][数组,点数和=>相应概率]*/functiongetResult($n){//定义骰子的点数及其概率$sixArr=array(1=>1/6,2=>1/6,3=>1/6,4=>1/6,5=>1/6,6=>1/6,);if($n==1){//只有一个骰子的情况return$sixArr;}else{//多个骰子情况$result=$sixArr;//假定结果是由一个骰子和其他任意个骰子的组合成的结果集//当有N个骰子的时候,需要组合N-1次for($i=0;$i<$n-1;$i++){$result=getDiffArrResult($result,$sixArr);}}return$result;}/***[getDiffArrResult将2个点数概率的数组进行组合,获取这2个数组组合而成的数字和及其概率]*@param[type]$arr1[第一个数组]*@param[type]$arr2[第二个数组]*@return[array][数组,点数和=>相应概率]*/functiongetDiffArrResult($arr1,$arr2){$result=array();foreach($arr1as$k1=>$v1){foreach($arr2as$k2=>$v2){if(!isset($result[$k1+$k2]))$result[$k1+$k2]=0;$result[$k1+$k2]+=$v1*$v2;}}return$result;}自己写的PHP版本。通过两重循环获取2个数组的键值(骰子点数)及其出现概率。并将其累加。即可获得结果
添加回答
举报
0/150
提交
取消
