#include <bits/stdc++.h>
#include <climits>
using namespace std;
int main() {
long long n;
while(cin>>n){
long long arr[n];
for(int i =0;i<n;i++)
cin>>arr[i];
//开始处理dp
//dp[i]等于arr[i]和dp[i-1]+arr[i]中大者
long long dp[n];
dp[0] = arr[0];
for(int i =1;i<n;i++)
dp[i] = max(arr[i],dp[i-1]+arr[i]);
//输出dp中最大者
long long max = LLONG_MIN;
for(auto a :dp){
if(a>max)max=a;
}
cout<<max;
}
}
// 64 位输出请用 printf("%lld")
标准dp应用

京公网安备 11010502036488号