keybuysellfor i=0;i<n;i++ for j=i+1;j<n;j++ p=key=arr[j]-arr[i] if !key key=p if key<p buy=i sell=j
問題變化:數組A中元素連續相加最大的子數組,只有當元素有負數時才有意義
分治策略的求解思路:
1.找到數組中的中央位置mid,A[low..mid],A[mid+1..high]
2.A[low,high] 完全位于子數組A[low..mid] low<=i<=j<=mid
3.完全位于A[mid+1..high] mid<i<=j<=hign
4.跨越中點 low<=i<=mid<j<=hign
5.找出左半部分最大和(從中間到左找),找出右半部分最大和(從中間向右找)
leftSum leftfor i=mid;i>=low;i-- sum=sum+A[i] if sum>leftSum leftSum=sum left=irightSum rightfor j=mid+1;j<=high;j++ sum+=A[j] if sum > rightSum rightSum=sum right=i6.遞歸調用 mid=(low+high)/2 find(A,low,mid) find(A,mid+1,high) findCross(A,low,mid,high)
相關推薦:
PHP實現求連續子數組最大和問題2種解決方法講解
PHP實現求解最長公共子串思路方法
以上就是php實現最大子數組的思路講解的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答