首頁 >後端開發 >php教程 >寫一個PHP函數。求任n個正負整數裡面最大的連續和,要求演算法時間複雜度盡量低。

寫一個PHP函數。求任n個正負整數裡面最大的連續和,要求演算法時間複雜度盡量低。

WBOY
WBOY原創
2016-07-28 08:27:461411瀏覽

header("content-type:text/html;charset=utf8");
//演算法分析:
//1、必須是整數序列
//2、如果整個序列不全是負數,最大子序列的第一項必須是正數,
//否則最大子序列後面的數加起來再加上第一項的負數,其和肯定不是最大的;
//3.如果整個序列都是負數,那麼最大子序列的和是0;
    $arr=array(-2,1,3,9,-4,2,3,8,-3,- 4,1,3);
        $thissum=0;
        $maxsum=0;
     /記錄子序列的結束下標
        for($i=0;$i          的和
            if($thissum>$maxsum){//如果當前子序列的和大於目前最大子序列的和
      $end=$i;
            }else if($thissum                $thissum=0;//前提此序列不全是負數
          }
        }
        $parr= array($start,$end,$maxsum);
    list($start,$end,$maxsum)=$parr;
    print_r($arr);
    echo '
';
    echo '最大子序列是:';
    for($i=$start;$i        echo $arr[$i]. >    }
    echo '
';
    echo '最大子序列的和是'.$maxsum;
?>

以上就介紹了 寫一個PHP函數。求任n個正負整數裡面最大的連續和,要求演算法時間複雜度盡量低。 ,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn