本篇内容主要讲解“php和python怎么求解最大子序列和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php和python怎么求解最大子序列和”吧!
算法是为求解一个问题需要遵循的、被清楚地指定的简单的指令的集合。对于一个问题,一旦给定某种算法并且确定是正确的,那么重要的一步是确定该算法将需要多少诸如时间和空间的问题,也就是要分析该算法的时间复杂度和空间复杂度,时间复杂度低和空间复杂度低就代表该算法是好的,但我们要努力找到最优的算法。下面来看看最大子序列和问题的最优求解算法,用php实现了
function maxSubSum($arr) {
$maxSum = $sum = $leftIndex = $rightIndex = 0;
$flag = false;
foreach ($arr as $key=>$value) {
$sum += $value;
if ($sum > $maxSum) {
$maxSum = $sum;
if($flag) {
$leftIndex = $key;
$flag = false;
}
$rightIndex = $key;
}
if($sum <0) {
$sum = 0;
$maxSum = 0;
$flag = true;
}
}
return array_slice($arr,$leftIndex,($rightIndex - $leftIndex)+1);
}
再来看看python实现
#!/usr/bin/python
def findMaxSubArray( inputList ):
if ( len( inputList ) == 0 ):
return inputList
middle = len( inputList ) / 2
leftSum,rightSum,crossingSum,tmpSum = 0,0,0,0
leftIndex,rightIndex = 0,len(inputList)
leftSum = sum(inputList[0:middle])
rightSum = sum(inputList[middle+1:])
tmpIndex = middle -1
while ( tmpIndex >0):
tmpSum +=inputList[tmpIndex]
if(tmpSum > leftSum):
leftIndex = tmpIndex
break;
tmpIndex = tmpIndex - 1
tmpIndex = middle+1
while (tmpIndex < len( inputList )):
tmpSum += inputList[tmpIndex]
if( tmpSum > rightSum ):
rightIndex = tmpIndex
break;
tmpIndex = tmpIndex + 1
return inputList[leftIndex:rightIndex]
if __name__ == '__main__':
inputList = [-1,-2,-4,-8,-3,-10,-13,-56,-33,-2,-4,-45,-55,-12,-3]
#inputList = [1,2,-4,8,4,0,-10,3,56,33,2,4,-45,55,0,-12,3]
print findMaxSubArray ( inputList )
到此,相信大家对“php和python怎么求解最大子序列和”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。