首页 > 代码库 > 过桥问题,求最短时间
过桥问题,求最短时间
小明一家5口人在夜晚过一座桥,小明过桥要1分钟,小明的弟弟过桥要3分钟,小明的爸爸过桥要6分钟,小明的妈妈过桥要8分钟,小明的爷爷过桥要12分钟;这座桥每次只能过2个人,因是夜晚,过桥时必须提着灯,小明有一只灯,点燃后30分钟会熄灭,问怎么样安排,才能保证小明一家在灯熄灭前过桥。
写了一个PHP程序解决这类问题。有问题,欢迎指出。
<?php /* 过桥问题 */ main(); function main(){ $arr=array(3,1,12,8,6); print bridge($arr); } function bridge($arr){ $route=""; if(count($arr)==1){ $route.=$arr[0]; } elseif(count($arr)==2){ $route.=$arr[0]>$arr[1]?$arr[0]:$arr[1]; }else{ sort($arr); $route.=$arr[1]."=>"; $route.=$arr[0]."=>"; $arrTmp=$arr; unset($arrTmp[0]); unset($arrTmp[1]); sort($arrTmp); while(count($arrTmp)>1){ //关键 if($arrTmp[count($arrTmp)-2]+$arr[0]>2*$arr[1]){ $route.=$arrTmp[count($arrTmp)-1]."=>"; $route.=$arr[1]."=>"; $route.=$arr[1]."=>"; $route.=$arr[0]."=>"; }else{ $route.=$arrTmp[count($arrTmp)-1]."=>"; $route.=$arr[0]."=>"; $route.=$arrTmp[count($arrTmp)-2]."=>"; $route.=$arr[0]."=>"; } unset($arrTmp[count($arrTmp)-2]); unset($arrTmp[count($arrTmp)]); } if(count($arrTmp)==1){ $route.=$arrTmp[count($arrTmp)-1]; }else{ $route=substr($route,0,strlen($route)-strlen("=>".$arr[0]."=>")); } return $route; } }
过桥问题,求最短时间
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。