为了账号安全,请及时绑定邮箱和手机立即绑定

PHP算法逻辑:如何计算年龄?

PHP算法逻辑:如何计算年龄?

三国纷争 2019-04-14 11:20:39
题目:经理有三个女儿,年龄相加为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个赞

做这种题我向来不行,但是太明显了,你漏了几个条件:
经理的一个手下知道经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。
->说明针对经理的年龄(三女儿年龄乘积),女儿的年龄有多种选择.
经理告诉手下有一个女儿头发是黑色的
->应该是"经理告诉手下只有一个女儿头发是黑色的",说明其他两个是小小孩,头发不黑?(逻辑对否?网上看到的...)
                            
查看完整回答
反对 回复 2019-04-14
?
慕斯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=11
1,2,10=20
1,3,9=27
1,4,8=32
1,5,7=35
2,2,9=36
1,6,6=36
2,3,8=48
2,4,7=56
2,5,6=60
3,3,7=63
3,4,6=72
3,5,5=75
4,4,5=80
found[2,2,9,36]
我的二杆子PHP写得太恼火了,还是写JS顺手,哈哈!
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号