PHP最大子序列和的算法实现

复制代码代码如下所示:
< PHP
作者:/遥远的眼神
15624575
算法分析:1,必须是一个整数序列,2,如果整个序列都不是负的,第一个最大序列必须是正的,否则最大序列数与第一个负数一起返回,并且肯定不是最大的;3,如果整个序列为负,则最大序列为0;
完全负序列非常简单,例如
$ ARR =阵列(4,- 2,- 5,6,2);
功能getmaxsum($ ARR){
thissum = 0美元;
maxsum = 0美元;
$开始= 0;开始记录序列。
$结束= 0;结束记录序列。
为($我= 0;$我<计数($ ARR);$ i++){
thissum美元美元美元= ARR {我}; / /获取当前序列
如果($ thissum > maxsum美元){ / /如果当前序列和大于当前最大序列
maxsum美元=美元thissum; / /改变当前的最大序列
$结束= $ i;
} else if($ thissum<0){ / /如果当前序列和小于0,下一个元素的值将被假定为第一子序列,这可以最大限度的保证从第一序列必须是积极的
thissum美元= 0; / /这个前提是不是所有的负序
$开始= $ i + 1;
}
}
帕尔=阵列(美元美元美元美元,开始,结束,maxsum);
返回的帕尔;
}
列表(美元美元美元开始,结束,maxsum)= getmaxsum($ ARR);
回声最大的子序列是;
对于($ i = $开始;$ i = $结束;$ + +){
echo ARR { $我}。;
}
回声';
The sum of the largest subsequence of echo 'is'.$maxsum;
>