资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给出一个长为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
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n],b[n];
for(int i=0;i<n;i++)
cin>>a[i];
b[0]=a[0];
for(int i=1;i<n;i++)
b[i]=max(b[i-1]+a[i],a[i]);
cout<<*max_element(b, b+n); //求数组b[]最大值
}