求数组有最大值时的子数组 php

例如,有$arr=array(1,2,3,4,-1,5,6,-9,6,1),求拥有最大值时的子数组,这里我们知道子数组是(1,2,3,4,-1,5,6)。要求子数组是连续... 例如,有$arr=array(1,2,3,4,-1,5,6,-9,6,1),求拥有最大值时的子数组,这里我们知道子数组是(1,2,3,4,-1,5,6)。要求子数组是连续的前N项,而不是只取正数。
当$arr=array(1,2,3,4,-1,5,6,-9,6,1,…),求程序
展开
 我来答
阳光上的桥
2015-07-09 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

程序如下:

<?php
  //和最大的连续子数组计算
  $arr=array(1,2,3,4,-1,5,6,-9,6,1);
  $max_sum='';//最大和
  $max_i='';//最大和子数组开始下标
  $max_j='';//最大和的子数组结束下标
  $n=count($arr)-1;//数组最大下标
  for ($i=0;$i<=$n;$i++){
    $sum=0;
    for ($j=$i;$j<=$n;$j++){
      $sum+=$arr[$j];
      //此时sum值为$i...$j子数组之和
      if ($max_sum==='' || $sum>$max_sum){
        $max_sum=$sum;
        $max_i=$i;
        $max_j=$j;
      }
    }
  }
  //输出结果
  echo "和最大的连续连续子数组和为 $max_sum\n";
  echo "是从 $max_i .... $max_j 的子数组\n";
  echo "内容是:";
  for ($i=$max_i;$i<=$max_j;$i++) echo $arr[$i],", "
?>

程序运行结果为:

和最大的连续连续子数组和为 20
是从 0 .... 6 的子数组
内容是:1, 2, 3, 4, -1, 5, 6,

 

如果$arr=array(-5,1,2,3,4,-1,5,6,-9,6,1),那么运行的结果为:

和最大的连续连续子数组和为 20
是从 1 .... 7 的子数组
内容是:1, 2, 3, 4, -1, 5, 6,

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式