• php实现最大子序和算法


    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    示例:

    输入: [-2,1,-3,4,-1,2,1,-5,4],
    输出: 6(最大子序列:4 -1 2 1 )

    第一种:

    $arr =  [-2,1,-3,4,-1,2,1,-5,4];
    
       function maxSubArray($nums) {
            for($i=1;$i<count($nums);$i++)
                $nums[$i] = max($nums[$i],$nums[$i]+$nums[$i-1]);
            return max($nums);
        }
    
    echo maxSubArray($a);

    第二种:

    $arr =  [-2,1,-3,4,-1,2,1,-5,4];
    $len = count($arr);
    $b =[];
    $b[0] = $arr[0];
    $max = $arr[0] >0 ?$arr[0]:0;
    $start_x = 0;
    for($i=1;$i<$len;$i++)
    {
        if(($b[$i-1] + $arr[$i]) > $arr[$i]){
            $b[$i] = $b[$i-1] + $arr[$i];
        }else{
            $b[$i] = $arr[$i];
            $start_x = $i; ;
        }    
        if($max < $b[$i]) {    
            $max = $b[$i];    
            $end_x = $i;
        }
    }
    print '最大子和: '.$max."
    ";
    print '开始位置: '.$start_x."	";
    print '结束位置: '.$end_x."
    ";
    print '最大子序列:';
    for($i=$start_x;$i<=$end_x;$i++){
        print $arr[$i].' ';
    }
  • 相关阅读:
    GIT相关学习网站
    【转】一些软件设计的原则
    c语言(14)
    c语言(13)
    c语言(12)
    c语言(11)
    c语言(十)
    c语言(九)
    c语言(八)
    c语言(七)
  • 原文地址:https://www.cnblogs.com/wt645631686/p/13181413.html
Copyright © 2020-2023  润新知