题目:经理有三个女儿,年龄相加为13。三个女儿的年龄相乘为经理的年龄,经理的一个手下知道经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?计算:functiongetAge($sum){$ageLimit=121;//最大年龄121岁$ageFrist=18;//假设最小生育年龄18岁$posible=[];for($c1=1;$c1string'1-5-7'(length=5)3=>string'1-6-6'(length=5)4=>string'2-2-9'(length=5)5=>string'2-3-8'(length=5)6=>string'2-4-7'(length=5)7=>string'2-5-6'(length=5)8=>string'3-3-7'(length=5)9=>string'3-4-6'(length=5)10=>string'3-5-5'(length=5)11=>string'4-4-5'(length=5)**/以上输出答案错误。如何解答本题?
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
做这种题我向来不行,但是太明显了,你漏了几个条件:经理的一个手下知道经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。->说明针对经理的年龄(三女儿年龄乘积),女儿的年龄有多种选择.经理告诉手下有一个女儿头发是黑色的->应该是"经理告诉手下只有一个女儿头发是黑色的",说明其他两个是小小孩,头发不黑?(逻辑对否?网上看到的...)
慕斯709654
TA贡献1840条经验 获得超5个赞
//用一个数组来保存可能性$list=array();//列出所有可能性,年龄按从小到大试for($i=1;$i<13;$i++){$rest=13-$i;for($j=$i;$j<=$rest/2;$j++){$k=$rest-$j;$product=$i*$j*$k;array_push($list,array($i,$j,$k,$product));}}//按经理年龄排序usort($list,function($a,$b){return$a[3]-$b[3];});//先看看所有可能性foreach($listaslist($i,$j,$k,$p)){echo"$i,$j,$k=$p\n";}//按年龄排除不可能的$map=array();foreach($listas$t){if($t[0]+$t[1]+$t[2]+14<$t[3]){$key="$t[3]";if(array_key_exists($key,$map)){array_push($map[$key],$t);}else{$map[$key]=array($t);}}}//找出不唯一的(因为唯一就不需要黑头发条件)$map=array_filter($map,function($v,$k){returncount($v)>1;},1);//二维转一维$list=array();foreach($mapas$k=>$v){$list=array_merge($list,$v);}//找出年龄中只有一个大于2岁的(黑头发)//关于多少岁头发变黑,只有找度娘了$list=array_filter($list,function($t){$temp=array_filter($t,function($v){return$v>2;});returncount($temp)==2;});//输出结果if(count($list)==1){echo"found".json_encode($list[0]);}else{echo"notfound";}?>所有输出(最后一行是结果)1,1,11=111,2,10=201,3,9=271,4,8=321,5,7=352,2,9=361,6,6=362,3,8=482,4,7=562,5,6=603,3,7=633,4,6=723,5,5=754,4,5=80found[2,2,9,36]我的二杆子PHP写得太恼火了,还是写JS顺手,哈哈!
添加回答
举报
0/150
提交
取消
