求数组的连续子数组之和的最大值
展开全部
$arr=array(23,24,25,45,46,90,91,92,93);
$item=array();
$result=array();
$sum=array();
$k=0;
for($i=0;$i<sizeof($arr);$i++){
if(isset($arr[$i+1])){
if($arr[$i]+1==$arr[$i+1]){
$item[$k][]=$arr[$i];
$item[$k][]=$arr[$i+1];
}
if($arr[$i]+1!=$arr[$i+1]){ //数字连续判断
$k++;
}
}
}
foreach($item as $k=>$v){
$result[]=array_unique($v);
}
foreach($result as $k=>$v){
$sum[$k]=array_sum($v);
}
$max=max($sum); //最大值判断
$max_key=array_keys($sum,$max); //找出最大值所在的键
$max_count=sizeof($result[$max_key[0]]); //利用键找出最大值所在的连续数组
echo $max_count; //输出最大连续数
$item=array();
$result=array();
$sum=array();
$k=0;
for($i=0;$i<sizeof($arr);$i++){
if(isset($arr[$i+1])){
if($arr[$i]+1==$arr[$i+1]){
$item[$k][]=$arr[$i];
$item[$k][]=$arr[$i+1];
}
if($arr[$i]+1!=$arr[$i+1]){ //数字连续判断
$k++;
}
}
}
foreach($item as $k=>$v){
$result[]=array_unique($v);
}
foreach($result as $k=>$v){
$sum[$k]=array_sum($v);
}
$max=max($sum); //最大值判断
$max_key=array_keys($sum,$max); //找出最大值所在的键
$max_count=sizeof($result[$max_key[0]]); //利用键找出最大值所在的连续数组
echo $max_count; //输出最大连续数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询