今天高海波就群里學(xué)生提出的問(wèn)題總結(jié)了這道題目
給定整數(shù):A1 A2 A3 A4 … An,其中可能有負(fù)數(shù),求Ai-Aj的和的最大值。
—————
PHP算法博大精深 一般學(xué)習(xí)php的人 不太重視這些php算法 但是我要告訴你的是 php算法是php程序員必有的職業(yè)“素質(zhì)” 比如你要應(yīng)聘大型公司如新浪 騰訊 網(wǎng)易 或一些中小型網(wǎng)絡(luò)公司 他們面試題目 絕不會(huì)少了php算法 因?yàn)閜hp算法能反應(yīng)一個(gè)程序員知識(shí)的牢固和邏輯思維!所以高海波 php技術(shù)博客 建議大家還是要重視php算法!好了 說(shuō)了這么多 現(xiàn)在正式進(jìn)入php算法解答這道題目!
<?php//作者:高海波//主頁(yè):http://www.it165.net///算法分析:1、必須是整數(shù)序列、2、如果整個(gè)序列不全是負(fù)數(shù),最大子序列的第一項(xiàng)必須是正數(shù),否則最大子序列后面的數(shù)加起來(lái)再加上第一項(xiàng)的負(fù)數(shù),其和肯定不是最大的;3、如果整個(gè)序列都是負(fù)數(shù),那么最大子序列的和是0;//全負(fù)數(shù)序列很簡(jiǎn)單,不舉例$arr=array(4,-3,5,-2,-1,2,6,-2);function getmaxsum($arr){$thissum=0;$maxsum=0;$start=0;//記錄子序列的起始下標(biāo)$end=0;//記錄子序列的結(jié)束下標(biāo)for($i=0;$i<count($arr);$i++){$thissum+=$arr[$i];//取得當(dāng)前子序列的和if($thissum>$maxsum){//如果當(dāng)前子序列的和大于當(dāng)前最大子序列的和$maxsum=$thissum;//改變當(dāng)前最大子序列的和$end=$i;}else if($thissum<0){//如果當(dāng)前子序列的和小于0,則把下一個(gè)元素值假定為最大子序列的第一項(xiàng),這里可以保證最大自序列的第一項(xiàng)一定是正數(shù)$thissum=0;//前提這個(gè)序列不全是負(fù)數(shù)$start=$i+1;}}$parr=array($start,$end,$maxsum);return $parr;}list($start,$end,$maxsum)=getmaxsum($arr);echo ‘最大子序列是:’;for($i=$start;$i<=$end;$i++){echo $arr[$i].”;}echo ‘<br>’;echo ‘最大子序列的和是’.$maxsum;?>
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選