ホームページ >php教程 >php手册 >PHP で部分列の最大合計を求めるアルゴリズムの実装

PHP で部分列の最大合計を求めるアルゴリズムの実装

WBOY
WBOYオリジナル
2016-06-21 08:54:27908ブラウズ

コードをコピー コードは次のとおりです:


//著者: Distant Expectation
//QQ:15624575
//アルゴリズム分析: 1. 整数シーケンスである必要があります。2. シーケンス全体がすべてではない場合負の数、最大値 サブシーケンスの最初の項目は正の数でなければなりません。そうでない場合、最大のサブシーケンスに続く数値と最初の項目の負の数の合計は絶対に最大にはなりません。 3. シーケンス全体が負の場合。 、最大の部分列の合計は 0 です;
//すべての負の数の列は非常に単純であり、例はありません
$arr=array(4,-3,5,-2,-1) ,2,6,-2);
function getmaxsum ($arr){
$thissum=0;
$start=0;// の開始インデックスを記録します。サブシーケンス
$end=0;//サブシーケンスのレコード終了添え字
for($i=0;$i$thissum+=$arr[ $i];//現在のサブシーケンスの合計を取得します
if($thissum>$maxsum){//現在のサブシーケンスの合計が現在の最大サブシーケンスの合計より大きい場合
$maxsum= $thissum;//現在の最大サブシーケンスの合計を変更します
$end =$i;
}else if($thissum$thissum=0;//このシーケンスが次であることが前提となります。すべての負の数ではありません
$start=$i+1;
}
}
$parr=array( $start,$end,$maxsum); >}
list($start,$end,$maxsum)=getmaxsum($arr);
echo '最大サブシーケンスは:';
for($i=$start;$iecho $arr[$i].';
}
echo '< ;br>';
echo '最大のサブシーケンスは'.$最大値;
?>





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。