子陣列之和的最大值

2021-05-26 13:36:20 字數 668 閱讀 6659

給定乙個陣列,查詢這個陣列的子陣列的最大和

比如{-2,5,3,-6,4,-8,6}

輸出最大和8

分析:假設已經找到乙個子陣列的最大和,這個子陣列是從陣列索引i到索引j。

可以用如下式子描述,cur_max = a[i , j]; 對於下乙個數,也就是索引為j+1,這個最大和是否

將a[j+1]加入cur_max,需要考慮cur_max的值和a[j+1];

如果當前的cur_max小於0,說明a[j+1] > a[i, j] + a[j]; cur_max = a[j+1];說明此時最大值從索引j+1開始

如果當前的cur_max大於或者等於0,cur_max = cur_max + a[j+1]。

每一輪需要比較cur_max和記錄的max值進行比較更新。

此演算法的時間複雜度為o(n) 空間複雜度為o(1);

原始碼:int maxsum( const int* numbers, unsigned int n )

return max;

}void main()

;//int nums = ;

cout << maxsum( nums, sizeof(nums) / sizeof(int) ) << endl;

system("pause");

}

子陣列之和的最大值

感謝firo july 2010.06.05。algorithm 1 時間效率為o n n n intmaxsubsequencesum1 const inta,intn return maxsum algorithm 2 時間效率為o n n intmaxsubsequencesum2 const...

2 14 子陣列之和的最大值

問題 求陣列的子陣列之和的最大值 解法一 遍歷 include include int maxsum int a,int n if sum maximum maximum sum return maximum int main printf d n maxsum array,5 return 0 解...

2 14 子陣列之和的最大值

問題 求陣列的子陣列之和的最大值 解法一 遍歷 include include int maxsum int a,int n if sum maximum maximum sum return maximum int main printf d n maxsum array,5 return 0 解...