#include <stdio.h>
#include <stdlib.h>
int main()
{
int K = 0;
scanf("%d", &K);
int a[K];
for(int i=0; i<K; i++)
scanf("%d",&a[i]);
int MaxSum = 0;
int ThisSum = 0;
for(int i=0; i<K; i++){
ThisSum += a[i];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
else if(ThisSum < 0) //如果当前的子列和<0,不可能是最大子列和子列中的序列,当前子列和直接归零,后面接着重新算
ThisSum = 0;
}
printf("%d\n", MaxSum);
return 0;
}
01-复杂度1 最大子列和问题
最新推荐文章于 2024-07-24 18:23:35 发布