#include <stdio.h>
#define N 1000000
#define MIN -1000000
int main() {
int dp[N]; //存放加上当前元素的最大子序列和
int num[N]={0}; //存放序列元素
int n;
int max; //记录最大子序列和
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
dp[0]=num[0];
max=MIN;
for(int i=1;i<n;i++){
dp[i]=(num[i])>(num[i]+dp[i-1])?(num[i]):(num[i]+dp[i-1]); //如果当前元素前一个的最大子序列和大于0则加上,否则不加
if(dp[i]>max)
max=dp[i];
}
printf("%d\n",max);
}
return 0;
}

京公网安备 11010502036488号