ホームページ >バックエンド開発 >PHPチュートリアル >最強の頭脳キム・スヒョン、PHPで部分列の最大和を求めるアルゴリズム実装はいつ放送される?
コードをコピーします コードは次のとおりです:
//著者: 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
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?>
以上、The Most Powerful Brain Kim Soo-hyun の内容を含め、PHP で最大部分列和を求めるアルゴリズムの実装を紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。