您好,登錄后才能下訂單哦!
本篇內容主要講解“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怎么求解最大子序列和”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。