问题描述:
这个问题在很多的面试或者算法例子中经常出现。其主要关键点在与最大和连续。下面在程序中具体说明。
struct data {
int temp;
int index;
}; //构造该结构体主要是为了,存储最大子序列值,和开始下标
struct data maxzixulie(int a[], int len)
{
struct data z;
int max = -1;
int temp;
int i = 0;
temp = -1;
int index = 0;
while( i < len)
{
if(temp<0)
{
temp = 0;
index = i;
}
else
{
temp = temp + a[i]; //只要大于等于0我们就认为该元素会为子序列做贡献
i++;
}
if(max < temp)
max = temp;
}
z.index = index; //开始下标
z.temp = max; //最大子序列值
return z;
}