这题可以 dp 来做,a[i] 原数组,f[i] 表示的是以 i 为结尾的子段最大值
动态转移方程式:dp[i]=max(a[i], dp[i-1] + a[i])
maxx 是所储存的最大的字段和
#include <iostream>
#include <cstdio>
#include <queue>
#include <string>
#include <algorithm>
#include <set>
using namespace std;
const int maxn=200005;
int dp[maxn],a[maxn],n,maxx=-100000;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
dp[i]=max(a[i],dp[i-1]+a[i]);
maxx=max(maxx,dp[i]);
}
cout<<maxx<<endl;
return 0;
}