dp[i]数组方法
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[100005];
int dp[100005];
int maxx=-999;
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
{
dp[i]=max(a[i],dp[i-1]+a[i]);//只要是前几个数和为正数(dp[i-1]),就更新
maxx=max(maxx,dp[i]);
}
cout<<maxx<<endl;
}
可以把前几个元素的和想成一个元素。
若和大于0,则更新。
时间复杂度为n。