**代码部分(此处采用的是时间复杂度为O(n)):
#include <stdio.h>
int max(int *m, int n) { //定义一个求最大子列和的函数,用指针来引用数组
int maxsum = 0, thissum = 0, j = 0;
for (j = 0; j < n; j++) {
thissum += *m;
m++;
if (thissum > maxsum) { //在线处理 , 若当前子列和为负数则归零,重新累加
maxsum = thissum;
}
else if (thissum < 0) {
thissum = 0;
}
}
return maxsum;
}
int main()
{
int n, t[100001] = { 0 }, flag = 0, a;
int* p = t;
scanf("%d", &n);
for (int i = 0; i < n; i++) { //for循环读入数组
scanf("%d", &t[i]);
}
a = max(p, n);
if (a >= 0) {
printf("%d", a);
}
else {
printf("0");
}
return 0;
}