求一个整数数组中和最大的连续子数组,例如:[4, -10, 210, -33, 45, -5, 22]的 最大连续子数组是[210, -33, 45, -5, 22](需写明思路,并编程实现)

PHP小算法一例:


function getMaxSubArr(array $arr) {
    $c = count($arr);
    $mckArr = []; // 放置各种可能组合(作为键名)及其和(作为值)
    for ($i = 0; $i < $c; $i++):
        $ck = ""; // 组合的键
        $subSum = 0; // 组合的和
        for ($j = $i; $j < $c; $j++){
            $ck .= $j == $i ? $j : "," . $j;
            $subSum += $arr[$j];
            $mckArr[$ck] = $subSum;
        }
    endfor;

    $mck = explode(",", array_search(max($mckArr), $mckArr)); //查找对应的和最大组合
    $res = []; // 最终结果
    foreach ($mck as $k => $v) {
        $res[] = $arr[$v]; // 把原数组中对应键的值放到结果中
    }
    return $res;
}

$arr = [4, -10, 210, -33, 45, -5, 22];
$res = getMaxSubArr($arr);
var_dump($res);

你可能感兴趣的:(PHP,php算法,最大连续子数组是)