1576.最大连续子序列和问题
描述:
给定一整数序列A0,A1, A2,… An-1 (可能有负数),求A0An-1的一个连续子序列AiAj,使得Ai到Aj的和最大。
输入:
先输入一个正整数n(1<n<1000),再输入n个整数。
输出:
输出最大连续子序列的和。
输入样例:
10
2 -1 5 -7 2 -1 4 -2 4 -5
输出样例:
7
#include<iostream>
using namespace std;
const int maxn=10050;
int n,a[maxn],sum[maxn];
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int i;
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
int ans=0;
for(i=1;i<=n;i++)
{
if(sum[i-1]>0)sum[i]=sum[i-1]+a[i];
else sum[i]=a[i];
ans=max(ans,sum[i]);
}
cout<<ans<<endl;
return 0;
}