最大连续子数组和

来源:互联网 发布:淘宝衣服代理加盟 编辑:程序博客网 时间:2024/05/18 02:27
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值,要求时间复杂度为O(n)。

#define SIZE 8#define COLUMN 4void MaxSumSubArray(int* arr) {int curSum = 0;int maxSum = arr[0];int maxBegin = 0;int maxEnd = 0;int tmpBegin = 0;//找出最大值for (int i = 0; i < SIZE; ++i) {curSum = curSum + arr[i] > arr[i] ? curSum + arr[i] : arr[i];if (curSum == arr[i]) {tmpBegin = i;}maxSum = curSum > maxSum ? curSum : maxSum;if (curSum == maxSum) {if (tmpBegin != maxBegin) {maxBegin = tmpBegin;}maxEnd = i;}}cout << "maxBegin:" << maxBegin << ", maxEnd:" << maxEnd << endl;cout << "MaxSubArray:" << endl;for (int i = maxBegin; i <= maxEnd; ++i) {cout << " " << arr[i];}cout << endl << "maxSum:" << maxSum << endl;}


0 0
原创粉丝点击