之前写过使用分治法来处理最大子数组问题,时间复杂度为O(logN),这次写一下用线性时间来解决最大子数组问题。只输出最大子数组的值,不输出到底哪几个元素组成最大子数组。
C++代码如下:
#include<iostream>
using namespace std;
int Maxsubsequence(const int a[], int n)
{
int Thissum=0, Maxsum = 0;
for (size_t i = 0; i < n; ++i)
{
Thissum += a[i];
if (Thissum > Maxsum)
{
Maxsum = Thissum;
}
if (Thissum < 0)
Thissum = 0;
}
return Maxsum;
}
int main()
{
int a[8] = { 2,-11,9,13,9,8,-15,67 };
cout<<Maxsubsequence(a, 8)<<endl;
return 0;
}