问题描述
给出一个长为n的数列,a1,a2,……,an,求和最大的连续子序列,即找到一对(i,j),i<=j,使ai+ai+1+……+aj的和最大,输出这个和
输入格式
第一行为正整数n
第二行n个用空格分开的整数
表示a1,a2,……,an
输出格式
一个整数,表示最大连续子序列的和
样例输入
3
-1 -2 -3
样例输出
-1
数据规模和约定
1<=n<=10^5,-10^5<=ai<=10^5
不用动态规划,甚至连long long 都不用
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void){
int n,max=-100001;
cin>>n;
for(int x,i=0,t=0;i<n;i++){
scanf("%d",&x);
t+=x;
if(t>max)max=t;
if(t<0)t=0;
}
cout<<max;
return 0;
}