#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应用