代码如下
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
while (cin >> n) {
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// dp[i] 表示以第 i 个数结尾的最大子段和
vector<int> dp(n);
dp[0] = max(a[0], 0);
int ans = dp[0];
for (int i = 1; i < n; i++) {
dp[i] = max(dp[i-1] + a[i], 0);
ans = max(ans, dp[i]);
}
cout << ans << endl;
}
return 0;
}
图解: