解决最大子序列有如下几种。
1. 暴力求解 o(n^3)
2. 暴力求解(优化点) o(n^2)
以上两种也是最容易想到的,这就不细说了。
3. 分而治之 o(nlogn)
int Max3( int A, int B, int C )
{ /* 返回3个整数中的最大值 */
return A > B ? A > C ? A : C : B > C ? B : C;
}
int DivideAndConquer( int List[], int left, int right )
{ /* 分治法求List[left]到List[right]的最大子列和 */
int MaxLeftSum, MaxRightSum; /* 存放左右子问题的解 */
int MaxLeftBorderSum, MaxRightBorderSum; /*存放跨分界线的结果*/
int LeftBorderSum, RightBorderSum;
int center