ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで部分列の最大合計を求めるアルゴリズムの実装

PHP_PHP チュートリアルで部分列の最大合計を求めるアルゴリズムの実装

WBOY
WBOYオリジナル
2016-07-21 15:27:58980ブラウズ

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

//著者: 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<0){//If the current subsequence シーケンスの合計が 0 より小さい場合、次の要素の値は最大のサブシーケンスの最初の項目であるとみなされます。最大の自己シーケンスの最初の項目が正の数であることが保証されます
$thissum=0;//前提条件は、このシーケンスがすべて負の数ではないということです
$start=$i+1; $parr=array($start,$end,$maxsum);
return $parr;
list($start,$end,$maxsum)=getmaxsum( $arr); '最大のサブシーケンスは次のとおりです。 ;
for($i=$start;$i<=$end;$i++){
echo $arr[$i].';
echo '
';最大のサブシーケンスは '.$maxsum?>



http://www.bkjia.com/PHPjc/323639.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/323639.html
技術記事

次のようにコードをコピーします。 ?php //Author: Distant Expectation//QQ:15624575 //アルゴリズム分析: 1. 整数シーケンスである必要があります。 2. シーケンス全体がすべて負の数でない場合は、最大のものの最初の数続きは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。