题目描述:
有n条绳子,长度分别为L[i]。如果从他们中切割出k条长度相同的绳子的话,这k条绳子每条最长能有多长?
function cut($k){
$arr=[7,5,8,11,9,30];
$mid=array_sum($arr)/$k;
return micro($arr,$mid/2,$k,$j=0,$mid);
}
function micro($arr,$mid,$shu,$j,$yuan){
if($j==50){
return $mid;
}
$tem=[];
foreach ($arr as $k=>$v){
$n=floor($v/$mid);
if($n>=1){
$tem[]=$n;
}
}
if(array_sum($tem)<$shu){//减小长度
dd($mid);
$mid2=$mid;
$mid=$mid-($yuan-$mid)/2;
$yuan=$mid2;
return micro($arr,$mid,$shu,$j=$j+1,$yuan);
}else if(array_sum($tem)>=$shu){//增加长度
dd($mid);
$mid=$mid+($yuan-$mid)/2;
return micro($arr,$mid,$shu,$j=$j+1,$yuan);
}
}
print_r(cut(11));